Подтвердить что ты не робот

Как использовать андроид: maxWidth?

Я хочу установить максимальную ширину окна редактирования. Поэтому я создал этот небольшой макет:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:maxWidth="150dp" > 

    <EditText 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:ems="10" /> 
</LinearLayout> 

Но это не сработает, коробка может быть более 150 dp в любом случае. android:maxWidth="150dp" в EditText даст тот же результат. Я прочитал (maxWidth не работает с fill_parent), чтобы установить максимальную и минимальную ширину в том же размере:

<EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:maxWidth="50dp"
        android:minWidth="50dp" />

Но это не так.

Я нашел решение моей проблемы здесь: Установка максимальной ширины в ViewGroup И это отлично работает. Но я думаю, что атрибут maxWidth здесь для меня. Как его использовать? Или есть документация по этому поводу? Я трачу часы на эту проблему и до сих пор не понимаю, как использовать этот простой атрибут.

4b9b3361

Ответ 1

Я хочу установить максимальную ширину окна редактирования.

В вашем примере:

<EditText 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:ems="10" /> 

Атрибуты layout_width и ems пытаются установить одно и то же значение. Android, похоже, выбирает большее значение fill_parent и игнорирует другое. И когда вы используете это:

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:maxWidth="50dp"
    android:minWidth="50dp" />

Здесь ems и maxWidth пытаются установить одно и то же значение, снова используется большее значение. Поэтому в зависимости от того, что вы действительно хотите, вы можете использовать:

<EditText 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:ems="10" /> 

или замените android:ems="10" на android:maxWidth="50dp", если вы предпочитаете работать с dp.

Наконец, у вашего LinearLayout только один ребенок, EditText. Обычно, когда это происходит, вы можете удалить теги LinearLayout и сами использовать EditText.