在自定义列表视图复选框上对齐列标题
Aligning columns headings on custom listview checkboxes
我使用的是每行都有多个复选框的表格布局,并且我使用的是自定义适配器。列在屏幕上均匀展开。在 parent 布局上,我还有一系列 "check/uncheck all" 类型的复选框,它们与列表视图复选框完美对齐。我的问题是我无法让复选框的列标题与列对齐。他们有一个蠕变,要么太多要么太少,更不用说在 phone 和平板电脑设备上工作了。我怀疑这个问题可能是由与最左边的复选框相关联的文本引起的,只有那些有与之相关联的文本。
这是 xml 的 check/uncheck 所有复选框和排列都很好。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/light_blue"
android:orientation="horizontal">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/checkBox1"
android:layout_height="match_parent"
android:layout_weight="1"
android:width="60dp"
android:background="@color/light_blue"
android:focusable="false"
android:focusableInTouchMode="false"
android:text="Ck all"
android:textSize="15dp"
android:textStyle="bold" />
<CheckBox
android:id="@+id/checkBoxI"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/light_blue"
android:focusable="false"
android:focusableInTouchMode="false" />
<CheckBox
android:id="@+id/checkBoxII"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/light_blue"
android:focusable="false"
android:focusableInTouchMode="false" />
等等
这是列标题,不对齐。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/light_blue"
android:orientation="horizontal">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_height="match_parent"
android:layout_weight="1"
android:width="60dp"
android:gravity="center"
android:background="@color/light_blue"/>
<TextView
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/light_blue"
android:gravity="center"
android:text="I"/>
<TextView
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight="1"
android:background="@color/light_blue"
android:text="I"/>
等等
这又是一次同样不符合的尝试
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/light_blue"
android:orientation="horizontal">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_height="match_parent"
android:width="60dp"
android:layout_weight="1"
android:text=""
android:gravity="center"
android:background="@color/light_blue"
android:focusable="false"
android:focusableInTouchMode="false"/>
<TextView
android:id="@+id/keycode"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight="1"
android:background="@color/light_blue"
android:text="I"
android:textStyle="bold" />
<TextView
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight="1"
android:background="@color/light_blue"
android:focusable="false"
android:focusableInTouchMode="false"
android:text="II"
android:textStyle="bold" />
等等
我尝试过许多不同的文本对齐组合,甚至尝试强制列宽,这当然不能跨设备工作。我在这上面花了一整天,但仍然毫无头绪。任何帮助表示赞赏。
好吧,这是我的愚蠢。我忘记了在剪切和粘贴时我在 table 行周围留下了 LinearLayouts。删除那些 Linearlayouts 后,东西按预期排列。不过,我确实必须给第一列一个 textsize 参数,否则与最左边的复选框相关联的文本的可变宽度会弄乱其余列的对齐方式。我只需要使文本大小大于该列中的任何文本。
我使用的是每行都有多个复选框的表格布局,并且我使用的是自定义适配器。列在屏幕上均匀展开。在 parent 布局上,我还有一系列 "check/uncheck all" 类型的复选框,它们与列表视图复选框完美对齐。我的问题是我无法让复选框的列标题与列对齐。他们有一个蠕变,要么太多要么太少,更不用说在 phone 和平板电脑设备上工作了。我怀疑这个问题可能是由与最左边的复选框相关联的文本引起的,只有那些有与之相关联的文本。
这是 xml 的 check/uncheck 所有复选框和排列都很好。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/light_blue"
android:orientation="horizontal">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/checkBox1"
android:layout_height="match_parent"
android:layout_weight="1"
android:width="60dp"
android:background="@color/light_blue"
android:focusable="false"
android:focusableInTouchMode="false"
android:text="Ck all"
android:textSize="15dp"
android:textStyle="bold" />
<CheckBox
android:id="@+id/checkBoxI"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/light_blue"
android:focusable="false"
android:focusableInTouchMode="false" />
<CheckBox
android:id="@+id/checkBoxII"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/light_blue"
android:focusable="false"
android:focusableInTouchMode="false" />
等等
这是列标题,不对齐。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/light_blue"
android:orientation="horizontal">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_height="match_parent"
android:layout_weight="1"
android:width="60dp"
android:gravity="center"
android:background="@color/light_blue"/>
<TextView
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/light_blue"
android:gravity="center"
android:text="I"/>
<TextView
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight="1"
android:background="@color/light_blue"
android:text="I"/>
等等
这又是一次同样不符合的尝试
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/light_blue"
android:orientation="horizontal">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_height="match_parent"
android:width="60dp"
android:layout_weight="1"
android:text=""
android:gravity="center"
android:background="@color/light_blue"
android:focusable="false"
android:focusableInTouchMode="false"/>
<TextView
android:id="@+id/keycode"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight="1"
android:background="@color/light_blue"
android:text="I"
android:textStyle="bold" />
<TextView
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight="1"
android:background="@color/light_blue"
android:focusable="false"
android:focusableInTouchMode="false"
android:text="II"
android:textStyle="bold" />
等等
我尝试过许多不同的文本对齐组合,甚至尝试强制列宽,这当然不能跨设备工作。我在这上面花了一整天,但仍然毫无头绪。任何帮助表示赞赏。
好吧,这是我的愚蠢。我忘记了在剪切和粘贴时我在 table 行周围留下了 LinearLayouts。删除那些 Linearlayouts 后,东西按预期排列。不过,我确实必须给第一列一个 textsize 参数,否则与最左边的复选框相关联的文本的可变宽度会弄乱其余列的对齐方式。我只需要使文本大小大于该列中的任何文本。