Android 表格布局宽度
Posted
技术标签:
【中文标题】Android 表格布局宽度【英文标题】:Android TableLayout Width 【发布时间】:2011-05-02 19:40:06 【问题描述】:我有一个两列 TableLayout
作为滚动视图的唯一子项。第一列包含TextViews
(“标签”),第二列包含EditText
/Spinner
/DateWidget
等(“值”)。即使我已经为 TableLayout
、TableRow
和所有小部件(在“值”列中)指定了 android:layout_width="fill_parent"
。
创建活动时屏幕看起来很完美。但是,当在EditText
中键入一个非常长的值时,“值”列会超出可见的屏幕区域。
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:您可能希望通过使用权重来定义列的大小。因此,您将定义表格布局高度以填充父级,但对于每一列,您应该将宽度设置为“0px”,并将权重设置为您希望列跨越的百分比。因此,假设您希望第一列是屏幕宽度的 30%,您将其权重设置为“0.3”,将第二列设置为“0.7”。
试试看是否可行。
【讨论】:
这是最终为我完成的唯一一件事。请注意,如果您在 TableLayout 上设置了 shrinkColumns 或 stretchColumns,那么这可能会对所有内容产生不利影响。 这个答案我不清楚,你的意思是为所有 TableRow 组的所有孩子设置权重?如果是这样,那么使用 TableLayout 有什么意义呢?为什么不直接使用 LinearLayouts?我建议在给您带来麻烦的列上同时设置拉伸和收缩。【参考方案2】:解决这个问题的实用方法是使用TableLayout
中的stretchColumns
和shrinkColumns
属性。它们的值应该是从 0 开始的列索引。
例如,如果您有一个两列表格布局并且:
您希望第二列填充空白空间(拉伸),以便TableLayout
适合大屏幕设备上的整个父视图
您希望在小屏幕设备上缩小第一列(其内容可能被包裹/椭圆化)
您可以将TableLayout
定义为:
<TableLayout
android:id="@+id/my_table_layout"
android:layout_
android:layout_
android:stretchColumns="1"
android:shrinkColumns="0" >
</TableLayout>
【讨论】:
另请注意,您可以拉伸和收缩列。在我的 TextView 列上这样做可以防止它超出屏幕大小,但也可以填满可用空间。【参考方案3】:这对我有用..
tableLayout.setColumnShrinkable(1,true);
【讨论】:
太棒了!第一个参数是列,第二个参数设置它可收缩!谢谢!【参考方案4】:<TableLayout
android:layout_
android:layout_
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp">
<TableRow
android:layout_
android:layout_>
<TextView
android:layout_
android:text="Name "
android:layout_>
</TextView>
<EditText
android:layout_
android:layout_weight="1"
android:hint="name"
android:layout_
>
</EditText>
</TableRow>
</TableLayout>
此代码对我来说可以在第一列上对齐文本视图并编辑文本填充父级。
【讨论】:
当您的单元格需要逐行不同的大小时,这种方法很有帮助【参考方案5】:试试这个,确保android:singleLine="false"
和android:inputType="textMultiLine"
:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_ android:layout_
android:stretchColumns="1">
<TableRow android:layout_
android:layout_>
<TextView android:text="Label:" />
<EditText android:id="@+id/entry" android:inputType="textMultiLine"
android:layout_ android:layout_
android:singleLine="false" />
</TableRow>
</TableLayout>
【讨论】:
【参考方案6】:Android 2.2 上的 EditText 也有类似的问题。在我的情况下,添加 android:maxWidth="0sp" 属性会有所帮助。现在 EditText 字段显示为我想要的 - 所以它仍然与其他 EditText 字段的大小相同,但是当输入长文本时它不会调整大小。
这是我的 EditText 定义:
<EditText android:id="@+id/extra_edit"
android:padding="3dip"
android:inputType="textImeMultiLine"
android:maxWidth="0sp"
android:layout_
/>
【讨论】:
EditText 中的提示和值被扭曲了——我只能看到第一个字母。有什么解决办法吗? 请注意,即使这是旧的:如果您使用 0 值,请考虑仅使用 0px。 sp 表示 Android 将对其应用缩放值,并且 0 * any = 0以上是关于Android 表格布局宽度的主要内容,如果未能解决你的问题,请参考以下文章