这是布局(下方)。我正在尝试重新定位复选框的位置;将其移动到视图的右侧。 android:gravity和android:layout_gravity似乎没有任何效果。任何解释?此LinearLayout是相对布局的子项。
<LinearLayout
android:id="@+id/deviceLinear"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_below="@id/view1" >
<ImageView
android:contentDescription="@string/devices_icon"
android:id="@+id/devices_img"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_weight="0.15"
android:layout_gravity="center"
android:src="@drawable/hardware_phone" />
<TextView
android:id="@+id/devices"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="0.43"
android:text="@string/devices"
android:textSize="20sp" />
<CheckBox
android:id="@+id/check_devices"
android:button="@drawable/custom_checkbox"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="0.42"
android:onClick="onCheckboxClicked" />
</LinearLayout>
答案 0 :(得分:2)
我认为您希望CheckBox
位于LinearLayout
的右侧。由于你已经给它一个layout_weight
,它总是占用宽度的一些固定百分比,无论它的大小如何,你可以通过那个蓝色边界框看到。
尝试将复选框包装在LinearLayout
的其他android:orientation='horizontal'
中。将0.42
权重赋予包裹LinearLayout
,然后将LinearLayout
的{{1}}设置为android:gravity
。这应该保持你的间距,同时将复选框移动到最右边。
这样的事情:
right
您可能还需要考虑一个<LinearLayout
android:orientation="horizontal"
android:layout_width="0dp"
android:layout_weight="0.42"
android:layout_height="wrap_content"
android:gravity="right" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
,它可以让您根据其他视图的位置定位视图。
答案 1 :(得分:1)
您将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为height的RelativeLayout中,您无法使用AlignParentBottom属性。
希望这会有所帮助......