我想在TextView的右侧放置一个TextView,在TextView的右侧放置一个控件(例如一个CheckBox)。我希望控件在屏幕上左对齐。这并不难通过LinearLayout或RelativeLayout获得。例如,我使用LinearLayout执行此操作:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/todo_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Small"
android:maxLines="2"
android:textStyle="bold" />
<View
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1" />
<CheckBox
android:id="@+id/todo_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:focusable="false"/>
</LinearLayout>
问题是,当TextView的文本太长时,它会将复选框推出屏幕,并且复选框不再可见。相反,我希望复选框固定在屏幕的右端,如果需要,TextView最终会分成两行。 我怎样才能做到这一点?
答案 0 :(得分:7)
使用android:layout_weight="1"
进行textview,复选框始终位于右侧。检查一下:Android Layout Weight
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/todo_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Small"
android:maxLines="2"
android:layout_weight="1"
android:textStyle="bold" />
<CheckBox
android:id="@+id/todo_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:focusable="false"/>
</LinearLayout>
答案 1 :(得分:0)
使用weightsum
和layout_weight
。
Weightsum是给父母的值,表示所有儿童成分必须加起来。
Layout_weight被赋予该布局的子项。该值对应于组件将占用的布局量。
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightsum = "100" >
<TextView
android:id="@+id/todo_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Small"
android:maxLines="2"
android:layout_weight="30"
android:textStyle="bold" />
<CheckBox
android:id="@+id/todo_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:layout_weight="70"
android:focusable="false"/>
</LinearLayout>
请记住,值是相反的(不确定它是如何工作的),但最大的layout_weight值占用最小的区域。