您正在为您的复选框提供 layout_weight="0.42" ,这意味着它将使用基于 LinearLayout 宽度的宽度进行测量。通过这种方法,您将永远无法将其放在正确的位置。
实现目标的最佳方式是使用 RelativeLayout。这是我的列表项布局,右侧有一个复选框。对合并标签感到抱歉,但它在 RelativeLayout 中合并
android:layout_width="match_parent"
android:layout_height="wrap_content"
属性
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView android:id="@+id/imgChannelIcon"
android:layout_alignParentLeft="true"
style="?muListItemImage60x60" />
<CheckBox android:id="@+id/chkIsChecked"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_alignTop="@+id/imgChannelIcon"
android:layout_alignParentRight="true"
android:layout_alignBottom="@+id/imgChannelIcon"
android:layout_marginLeft="@dimen/list_item_checkbox_margin_left"
android:layout_marginRight="@dimen/list_item_checkbox_margin_right"
android:layout_marginTop="@dimen/list_item_checkbox_margin_top"
android:layout_marginBottom="@dimen/list_item_checkbox_margin_bottom"
android:focusable="false"
android:focusableInTouchMode="false" />
<TextView android:id="@+id/lblChannelTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/imgChannelIcon"
android:layout_alignTop="@+id/imgChannelIcon"
android:layout_toLeftOf="@+id/chkIsChecked"
android:layout_alignWithParentIfMissing="true"
android:includeFontPadding="false"
android:textStyle="bold"
android:text="@string/channel_item_dummy_title"
style="?muListItemTextBig" />
<TextView android:id="@+id/lblChannelSubtitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/imgChannelIcon"
android:layout_below="@+id/lblChannelTitle"
android:layout_toLeftOf="@+id/chkIsChecked"
android:layout_alignWithParentIfMissing="true"
android:includeFontPadding="false"
android:textStyle="normal"
android:text="@string/channel_item_dummy_subtitle"
style="?muListItemTextNormal" />
<TextView android:id="@+id/lblChannelCategory"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_toRightOf="@+id/imgChannelIcon"
android:layout_below="@+id/lblChannelSubtitle"
android:layout_alignBottom="@+id/imgChannelIcon"
android:layout_toLeftOf="@+id/chkIsChecked"
android:layout_alignWithParentIfMissing="true"
android:includeFontPadding="false"
android:paddingLeft="3dp"
android:gravity="center_vertical|left"
android:textStyle="italic"
android:text="@string/channel_item_dummy_category"
style="?muListItemTextNormal_Inverse" />
<TextView android:id="@+id/lblChannelUpdate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_below="@+id/imgChannelIcon"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:includeFontPadding="false"
android:paddingTop="3dp"
android:paddingBottom="3dp"
android:textStyle="italic"
android:text="@string/channel_item_dummy_update"
style="?muListItemTextTiny" />
</merge>
如您所见,我首先放置一个带有 layout_alignParentLeft="true" 的图像,然后是带有 layout_alignParentRight="true" 的复选框,最后我根据这两个组件排列其他组件。从您的图像中,我可以看到您可以使用您的 devices_img 作为左侧组件(但您必须给它一个固定的高度,也许还有一些边距才能成为布局的高度)和您的复选框作为您的右侧。
请记住,在以 wrap_content 作为高度的 RelativeLayout 中,您不能使用 AlignParentBottom 属性。
希望这可以帮助...