Android TableLayout宽度

Sam*_*gal 32 layout android width tablelayout

我有两列TableLayout作为滚动视图的唯一子项.第一列包含TextViews("标签")和第二列包含EditText/ Spinner/ DateWidget等("值").尽管我已经指定android:layout_width="fill_parent"TableLayout,TableRow和所有小工具(在"价值"列).

创建活动时,屏幕看起来很完美.但是,当人们输入一个非常长的值时EditText,"值"列超出了可见的屏幕区域.

我该如何解决这个问题?

Sav*_*sis 58

您可能希望使用权重来定义列的大小.因此,您将定义表格布局高度以填充父级,但对于每列,您应将宽度设置为"0px",将权重设置为希望列跨越的百分比.因此,假设您希望第一列为屏幕宽度的30%,则将其权重设置为"0.3",将第二列设置为"0.7".

试一试,看看是否有效.

  • 我不清楚这个答案,您的意思是为所有 TableRow 组的所有子项设置权重?如果是这样,那么使用 TableLayout 到底有什么意义呢?为什么不直接使用 LinearLayouts 呢?我建议在给您带来麻烦的列上同时设置拉伸和收缩。 (2认同)

Jes*_*run 24

解决这个问题的实用方法是使用stretchColumnsshrinkColumns属性TableLayout.它们的值应该是基于0的列索引.

例如,如果您有两列表格布局,并且:

  • 您希望第二列填充空白区域(拉伸),以便TableLayout将整个父视图放在大屏幕设备上
  • 您希望在小屏幕设备上缩小第一列(并且其内容可能被包装/椭圆化)

你会定义你TableLayout的:

<TableLayout
    android:id="@+id/my_table_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:stretchColumns="1"
    android:shrinkColumns="0" >
</TableLayout>
Run Code Online (Sandbox Code Playgroud)

  • 另请注意,您可以拉伸和缩小列.在TextView列上执行此操作可以防止它超出屏幕大小,但也可以填充可用空间. (2认同)

小智 7

这对我有用..

tableLayout.setColumnShrinkable(1,true);
Run Code Online (Sandbox Code Playgroud)


Tho*_*V J 5

<TableLayout 
android:layout_height="fill_parent" 
android:layout_width="fill_parent"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp">
<TableRow 
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<TextView 
android:layout_width="wrap_content"
android:text="Name " 
android:layout_height="fill_parent">
</TextView>
<EditText 
android:layout_width="0dp"
android:layout_weight="1"
android:hint="name"
android:layout_height="wrap_content" 
>
</EditText>
</TableRow>
</TableLayout>
Run Code Online (Sandbox Code Playgroud)

这段代码可以让我在第一列上对齐文本视图并编辑文本填充父级.