如何使 TableLayout 响应
How to make TableLayout Responsive
目前我正在开发一些 android
应用程序,其中包含 list
。
我在移动(手机)设备上做了一个。
我想让它 responsive
在平板电脑 (7"-10") 中显示。所以 header
和 column
看起来与移动显示相同。
这是 5" 和 7" 显示器之间的差异:
这是我当前的 xml 代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:tag="reqtag"
>
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent"
android:showDividers="beginning|end"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Date"
android:id="@+id/tvClaimDateReimbursementRequest"
android:layout_marginRight="50dp"
android:textSize="12dp"
android:width="100dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Type"
android:textSize="12dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:id="@+id/tvTypeRequestReimbursement"
android:width="80dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Amount"
android:textSize="10dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:width="100dp"
android:id="@+id/tvAmountReimbursementRequest" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Status"
android:textSize="12dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:id="@+id/tvStatusReimbursementRequest" />
</TableRow>
</TableLayout>
我看过这里的文档https://developer.android.com/guide/practices/screens_support.html
但我还是不明白,
做这样的事情有什么最佳实践吗?
谢谢
你可以尝试设置
android:layout_width="0dp"
android:layout_weight="1"
对于每个 header TextView
,因为 TableRow
是 LinearLayout
。
但我认为 TableView
不是最好的方法。如果您描述了您想要实现的目标,我们可以想出更好的方法。
为您的表格行布局分配一个权重和。然后将该权重平均分配给所有文本视图。喜欢:
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weight_sum="1" >
<TextView
android:layout_width="0dp"
android:layout_weight=".2" // for five texts .2 for each
android:layout_height="wrap_content"
...... />
在您的 table 行中尝试此代码
水平排列其子项的布局。 TableRow 应始终用作 TableLayout 的子项。如果 TableRow 的父级不是 TableLayout,则 TableRow 将表现为水平 LinearLayout。
TableRow 的子项不需要在 XML 文件中指定 layout_width 和 layout_height 属性。 TableRow 始终强制这些值分别为 MATCH_PARENT 和 WRAP_CONTENT.
文本应使用 sp,视图应使用 dp。所以应该是 android:textSize="12sp"
而不是 android:textSizes="12dp"
查看此处了解更多详情:https://developer.android.com/guide/topics/resources/more-resources.html#Dimension
目前我正在开发一些 android
应用程序,其中包含 list
。
我在移动(手机)设备上做了一个。
我想让它 responsive
在平板电脑 (7"-10") 中显示。所以 header
和 column
看起来与移动显示相同。
这是 5" 和 7" 显示器之间的差异:
这是我当前的 xml 代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:tag="reqtag"
>
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent"
android:showDividers="beginning|end"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Date"
android:id="@+id/tvClaimDateReimbursementRequest"
android:layout_marginRight="50dp"
android:textSize="12dp"
android:width="100dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Type"
android:textSize="12dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:id="@+id/tvTypeRequestReimbursement"
android:width="80dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Amount"
android:textSize="10dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:width="100dp"
android:id="@+id/tvAmountReimbursementRequest" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Status"
android:textSize="12dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:id="@+id/tvStatusReimbursementRequest" />
</TableRow>
</TableLayout>
我看过这里的文档https://developer.android.com/guide/practices/screens_support.html
但我还是不明白, 做这样的事情有什么最佳实践吗?
谢谢
你可以尝试设置
android:layout_width="0dp"
android:layout_weight="1"
对于每个 header TextView
,因为 TableRow
是 LinearLayout
。
但我认为 TableView
不是最好的方法。如果您描述了您想要实现的目标,我们可以想出更好的方法。
为您的表格行布局分配一个权重和。然后将该权重平均分配给所有文本视图。喜欢:
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weight_sum="1" >
<TextView
android:layout_width="0dp"
android:layout_weight=".2" // for five texts .2 for each
android:layout_height="wrap_content"
...... />
在您的 table 行中尝试此代码 水平排列其子项的布局。 TableRow 应始终用作 TableLayout 的子项。如果 TableRow 的父级不是 TableLayout,则 TableRow 将表现为水平 LinearLayout。
TableRow 的子项不需要在 XML 文件中指定 layout_width 和 layout_height 属性。 TableRow 始终强制这些值分别为 MATCH_PARENT 和 WRAP_CONTENT.
文本应使用 sp,视图应使用 dp。所以应该是 android:textSize="12sp"
android:textSizes="12dp"
查看此处了解更多详情:https://developer.android.com/guide/topics/resources/more-resources.html#Dimension