Intereting Posts
Почему плотность Nexus 6 составляет 560 точек на дюйм? Не найден идентификатор ресурса для android: elevation ArrayAdapter является необработанным предупреждением? Есть ли какой-либо API в Android, который измеряет силу сигнала Bluetooth? Kivy – Plyer – Android – отправка уведомления, пока приложение не запущено Разница между getApplicationContext и classname.this Воспроизведение фрагмента backstack без воспроизведения Pop-Animation Текст содержания уведомлений Android не отображается в OS 4.4.4 Kitkat, но отображается на OS 5.0 Lollipop Android WebView: масштабирование до определенного масштаба после загрузки содержимого LayoutLib слишком недавно. Обновите свой инструмент? Как я могу изменить текст EditText без запуска Text Watcher? Как правильно установить высоту строки для Android? Оператор switch с аргументом string в качестве аргумента в Android Запуск zipalign с рекомпрессией zopfli после сборки APK из командной строки, чтобы уменьшить его Уровень n Расширяемый список просмотров

Редактирование текста с экрана с помощью GridLayout

У меня есть следующий макет, где тексты редактирования выходят из экрана, по-видимому, без причины. Я пытаюсь найти подобную проблему, но я не мог. Это должно быть легко, но я пробовал много вещей без везения.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <GridLayout android:id="@+id/gridLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ffffff" android:columnCount="2" android:orientation="horizontal" > <TextView android:id="@+id/titleTextView" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:paddingBottom="10dp" android:paddingTop="10dp" android:text="dsgsdgsd" android:textColor="@color/red" android:textStyle="bold" /> <View android:layout_width="fill_parent" android:layout_height="2dip" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:background="@color/red" /> <TextView android:id="@+id/textTitle" android:layout_gravity="left" android:background="#ffffff" android:paddingLeft="15dp" android:text="Title" android:textColor="@color/grey" /> <EditText android:id="@+id/editTitle" android:layout_gravity="right" android:inputType="text"> </EditText> <View android:layout_height="1dip" android:layout_columnSpan="2" android:layout_gravity="left" android:background="#E6E6E6" /> <TextView android:id="@+id/textCategory" android:layout_gravity="left" android:background="#ffffff" android:gravity="left" android:paddingLeft="15dp" android:text="Category" android:textColor="@color/grey" /> <EditText android:id="@+id/editCategory" android:layout_width="225dp" android:layout_gravity="right" android:inputType="text" /> <Button android:id="@+id/btnCreateAccount" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:background="#ffffff" android:onClick="createExpense" android:text="Done" android:textColor="@color/red" /> </GridLayout> 

Проверьте обновленный код:

Вам не хватало атрибутов ширины, высоты, и вы использовали match_parent в более раннем элементе, таком как View, что помешало любому более позднему элементу получить пространство на экране.

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <GridLayout android:id="@+id/gridLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ffffff" android:columnCount="2" android:orientation="horizontal" > <TextView android:id="@+id/titleTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:paddingBottom="10dp" android:paddingTop="10dp" android:text="dsgsdgsd" android:textColor="@color/red" android:textStyle="bold" /> <View android:layout_width="wrap_content" android:layout_height="2dip" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:background="@color/red" /> <TextView android:id="@+id/textTitle" android:layout_gravity="left" android:background="#ffffff" android:paddingLeft="15dp" android:text="Title" android:textColor="@color/grey" /> <EditText android:id="@+id/editTitle" android:layout_gravity="right" android:inputType="text" > </EditText> <View android:layout_width="wrap_content" android:layout_height="1dip" android:layout_columnSpan="2" android:layout_gravity="left" android:background="#E6E6E6" /> <TextView android:id="@+id/textCategory" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left" android:background="#ffffff" android:gravity="left" android:paddingLeft="15dp" android:text="Category" android:textColor="@color/grey" /> <EditText android:id="@+id/editCategory" android:layout_width="225dp" android:layout_height="wrap_content" android:layout_gravity="right" android:inputType="text" /> <Button android:id="@+id/btnCreateAccount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:background="#ffffff" android:onClick="createExpense" android:text="Done" android:textColor="@color/red" /> </GridLayout> </LinearLayout> 

Выход без цвета и фона, поскольку он дает мне ошибку из-за недостающего ресурса:

Введите описание изображения здесь

Здесь вы можете видеть как ваши edittexts на экране.

Попробуйте это, возможно, это поможет вам

 <GridLayout android:id="@+id/gridLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ffffff" android:columnCount="2" android:orientation="horizontal" > <TextView android:id="@+id/titleTextView" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:paddingBottom="10dp" android:paddingTop="10dp" android:text="dsgsdgsd" android:textColor="@color/red" android:textStyle="bold" /> <View android:layout_width="fill_parent" android:layout_height="2dip" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:background="@color/red" /> <TableRow android:id="@+id/tableRow1" > <TextView android:id="@+id/textTitle" android:background="#ffffff" android:paddingLeft="15dp" android:text="Title" android:textColor="@color/grey" /> <EditText android:id="@+id/editTitle" android:layout_width="250dp" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/activity_horizontal_margin" android:layout_weight="1" android:inputType="text" > <requestFocus /> </EditText> </TableRow> <View android:layout_height="1dip" android:layout_columnSpan="2" android:layout_gravity="left" android:background="#E6E6E6" /> <TextView android:id="@+id/textCategory" android:layout_gravity="left" android:background="#ffffff" android:gravity="left" android:paddingLeft="15dp" android:text="Category" android:textColor="@color/grey" /> <EditText android:id="@+id/editCategory" android:layout_width="225dp" android:layout_gravity="right" android:inputType="text" /> <Button android:id="@+id/btnCreateAccount" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:background="#ffffff" android:onClick="createExpense" android:text="Done" android:textColor="@color/red" /> </GridLayout> 

Измените часть EditText на это:

 <EditText android:id="@+id/editTitle" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_column="0" android:layout_gravity="center_horizontal|top" android:layout_row="4" android:ems="10" android:inputType="text" /> 

Попробуйте этот путь, надеюсь, что это поможет вам решить вашу проблему.

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <GridLayout android:id="@+id/gridLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#ffffff" android:columnCount="2" android:orientation="horizontal" > <TextView android:id="@+id/titleTextView" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:paddingBottom="10dp" android:layout_row="0" android:paddingTop="10dp" android:text="dsgsdgsd" android:textColor="@color/red" android:textStyle="bold" /> <View android:layout_width="match_parent" android:layout_height="2dp" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_marginLeft="20dp" android:layout_row="1" android:layout_marginRight="20dp" android:background="@color/red" /> <TextView android:id="@+id/textTitle" android:layout_gravity="left" android:background="#ffffff" android:paddingLeft="15dp" android:layout_row="2" android:layout_column="0" android:text="Title" android:textColor="@color/grey" /> <EditText android:id="@+id/editTitle" android:layout_width="225dp" android:layout_gravity="right" android:layout_row="2" android:layout_column="1" android:inputType="text"> </EditText> <View android:layout_height="2dp" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_row="3" android:background="#E6E6E6" /> <TextView android:id="@+id/textCategory" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left" android:background="#ffffff" android:gravity="left" android:layout_row="4" android:layout_column="0" android:paddingLeft="15dp" android:text="Category" android:textColor="@color/grey" /> <EditText android:id="@+id/editCategory" android:layout_width="225dp" android:layout_column="1" android:layout_gravity="right" android:layout_row="4" android:inputType="text" /> <Button android:id="@+id/btnCreateAccount" android:layout_width="match_parent" android:layout_gravity="center" android:background="#ffffff" android:layout_row="5" android:layout_columnSpan="2" android:onClick="createExpense" android:text="Done" android:textColor="@color/red" /> </GridLayout> </LinearLayout> 

Как общий комментарий, вы никогда не сможете использовать wrap_content с помощью EditText , он всегда будет занимать размер содержимого и не соблюдать никаких других границ, поэтому пользователь всегда может взорвать макет, просто набрав излишний текст. Мне потребовались годы, чтобы понять это самое основное наблюдение за тем, как андроид приостанавливает различные ограничения.

В этом контексте, когда GridLayout решает, что он не может соответствовать столбцу в пределах его родительских границ, он отказывается и приходит с дефектным результатом, поэтому обычно мы связываем GridLayout по ширине экрана, первый столбец, который превышает ширину, будет принудительно отключен экран.

Если вы хотите, чтобы большие и малые поля ввода соответствовали размерам данных, самым простым способом является определение фиктивных столбцов с весами, которые могут использоваться для захвата пространства экрана или для больших полей.