Android using Linear layout maxWidth, not work with fill_parent
The attribute maxWidth
has no effect on a width of match_parent
(or the deprecated fill_parent
), they are mutually exclusive. You need to use wrap_content
.
Also any layout that only has one child can probably be removed, for instance you can simplify you current layout to:
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="50dip"/>
If anyone wants the combined behaviour of match_parent
and maxWidth
in a single parent layout: You can use a ConstraintLayout and
constrain the child by the parent bounds combined with layout_constraintWidth_max
.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintWidth_max="480dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
You can achieve the same effect using different layouts for different screens. Say you want your EditText
to fill the available width but not more than 480dp. Difine your layouts as follows:
layout/my_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
layout-w480dp/my_layout.xml: (choose you max width as the qualifier here)
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="480dp"
android:layout_height="wrap_content"/>