1

これがレイアウトです(下)。チェックボックスの位置を変更しようとしています。ビューの右側に移動します。android:gravity と android:layout_gravity は効果がないようです。説明はありますか?この LinearLayout は Relative Layout の子です。

ここに画像の説明を入力

<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>
4

2 に答える 2

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" でチェックボックスを配置し、最後にこれら 2 つに基づいて他のコンポーネントを配置します。あなたの画像から、devices_imgを左のコンポーネントとして使用できることがわかります(ただし、レイアウトの高さになるには、固定の高さとおそらくいくつかのマージンを与える必要があります)、チェックボックスを右として使用できます。

高さが wrap_content の RelativeLayout では、AlignParentBottom 属性を使用できないことに注意してください。

お役に立てれば...

于 2013-06-26T21:59:39.390 に答える