我有以下布局,编辑文本显然没有任何理由离开屏幕。我试图找到类似的问题,但我无法做到。它应该是一个简单的,但我没有运气就尝试过很多东西。
<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>
答案 0 :(得分:1)
检查更新后的代码:
您缺少一些宽度,高度属性,并且您在之前的元素(如View)中使用了match_parent,这阻止了任何后续元素在屏幕上获取空间。
<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。
答案 1 :(得分:0)
试试这可能对你有帮助
<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>
答案 2 :(得分:0)
将EditText部件更改为This:
<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" />
答案 3 :(得分:0)
请尝试这种方式,希望这有助于您解决问题。
<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>
答案 4 :(得分:0)
作为一般性评论,您永远不能将wrap_content
与EditText
一起使用,它始终采用内容大小而不尊重任何其他边界,因此用户只需输入即可打破布局文字过多。我花了很长时间才意识到这个关于android如何优先考虑各种约束的基本观察。
在这种情况下,当GridLayout决定它不能适应其父边界内的列时,它会放弃并产生错误的结果,所以通常我们将GridLayout绑定到屏幕宽度,超出宽度的第一列将被迫离开屏幕。
如果您想要大小的输入字段来匹配数据大小,最简单的方法是定义虚拟列,其权重可用于占用屏幕空间,或跨越更大的字段。