Android EditText не займет оставшееся место - PullRequest
3 голосов
/ 14 мая 2010

В моем приложении для Android у меня есть вкладка Activity. В одной из вкладок у меня есть две TextView с и две EditText с.

Первая EditText - это только одна строка, и это нормально. Тем не менее, я хочу, чтобы другие EditText, android:id="@+id/paste_code" заняли оставшееся место, но независимо от того, что я с ним сделаю, он покажет только одну строку. Я не хочу устанавливать количество строк вручную, поскольку число, которое будет соответствовать размеру экрана, зависит от вашего устройства.

Вот соответствующий код. Он вложен во все необходимые компоненты для вкладки Activity.

<ScrollView
    android:id="@+id/basicTab"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:layout_weight="1" >
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Paste title"
            android:layout_weight="0" />
        <EditText
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="@string/paste_title_hint"
            android:id="@+id/paste_title"
            android:lines="1"
            android:gravity="top|left"
            android:layout_weight="0" />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Paste text"
            android:layout_weight="0" />
        <EditText
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:hint="@string/paste_hint"
            android:id="@+id/paste_code"
            android:gravity="top|left"
            android:layout_weight="1" />
    </LinearLayout>
</ScrollView>

Ответы [ 2 ]

9 голосов
/ 28 августа 2010

Поскольку принятый ответ не решает ситуацию полностью, вот правильное решение для людей, приходящих к этому во время поиска:

Во-первых, Ромен Гай из команды разработчиков Android рассматривает это хорошо в этом сообщении в блоге:

http://www.curious -creature.org / 2010/08/15 / scrollviews-удобно-трик /

По сути, ваш ScrollView должен содержать атрибут android:fillViewport="true".

Если что-то не работает после того, как вы это сделали, вот пара вещей, которые нужно проверить:

  • Макет внутри ScrollView (например, LinearLayout) должен иметь layout_height="wrap_content"
  • Представления, которые вы хотите расширить, должны иметь layout_height="wrap_content"
  • Представления, которые вы хотите расширить, должны иметь layout_weight="1.0" или аналогичный

Не забудьте установить minLines="3" или подобное в представлениях, которые вы хотите расширить, если вы не хотите, чтобы они / они слишком сильно сократились.

0 голосов
/ 14 мая 2010

Кажется, проблема в том, что вы используете ScrollView. Я протестировал ваш код, используя ScrollView в качестве родительского контейнера, и получил ту же проблему. Однако, если я заменил ScrollView на LinearLayout, то второй EditText должным образом расширился, чтобы заполнить весь экран. Проблема должна заключаться в том, что ScrollViews созданы для наименьшего возможного размера независимо от того, какие настройки вы установили в android: layout_height. Я экспериментировал с еще несколькими макетами, например a RelativeLayout с использованием layout_above и layout_below, но они влияют только на его максимальный размер, а не на его размер, когда он пуст. К сожалению, это означает, что я не уверен, как решить вашу проблему ... Есть ли способ, которым вы можете изменить дизайн своего макета, чтобы использовать что-то кроме ScrollView в качестве родительского контейнера?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...