如何在Actionbar Spinner中将TextView与最左侧和最右侧的ImageView对齐?

时间:2014-11-10 23:23:09

标签: android android-layout layout android-actionbar spinner

我正在尝试布局一个操作栏微调器下拉列表。我在每一行都有一个textview和一个imageview。我希望textview对齐到下拉列表的最左侧(使用paddingLeft),我希望imageview对齐到下拉列表的最右侧。 textview中的文本长度不同,因此图标最终与文本视图的右侧对齐。此布局在操作栏上提供了两个行项目,其中包含微调器标题和所选项目名称。

这是我目前的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/spinner_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="14sp" />

    <LinearLayout
        android:id="@+id/item_row"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="-5dp"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/item_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="5dp"
            android:layout_weight="1"
            android:gravity="left"
            android:textSize="18sp" />

        <ImageView
            android:id="@+id/icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="right"
            android:contentDescription="icon" />
    </LinearLayout>
</LinearLayout>

我尝试了类似下面的相对布局,结果相似(参见屏幕截图)。蓝牙图标是尚未创建的图标(相同大小)的替代品:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/spinner_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="14sp" />

<RelativeLayout
    android:id="@+id/item_row"
    android:layout_width="wrap_content"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/item_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:textSize="18sp" />

    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_toRightOf="@+id/item_name"
        android:contentDescription="icon" />
</RelativeLayout>

enter image description here

1 个答案:

答案 0 :(得分:1)

使用RelativeLayout代替LinearLayout,并使用子项上的alignParentLeft / Right属性正确放置它们。