如何将2个子窗口小部件中的一个子窗口小部件集中在一起

时间:2014-03-12 16:25:33

标签: android android-layout

目前,我有LinearLayout NumberPicker& TextView(使用文本“长字符串字符串”)

enter image description here

这不是我希望实现的目标。我希望实现的是

  1. NumberPicker将位于水平中心
  2. “长字符串”TextView只会恰好位于NumberPicker的右侧
  3. 以下布局无效。因为它将NumberPicker + TextView视为单个元素,并将它们两者放在一起。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <TextView
            android:id="@+id/message_text_view"
            android:text="@string/might_drain_battery"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
    
        <LinearLayout
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <NumberPicker
                android:id="@+id/number_picker"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
    
            <TextView
                android:text="long string string"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>
    </LinearLayout>
    

    我稍微更改了代码。我从内部gravity移除LinearLayout,并将layout_gravity放入NumberPicker

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <NumberPicker
            android:layout_gravity="center"
            android:id="@+id/number_picker"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
        <TextView
            android:text="long string string"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
    

    但是,这仍然无效(我想知道为什么NumberPicker不再处于中心位置)

    enter image description here

    有任何建议我如何实现我想要的布局?

1 个答案:

答案 0 :(得分:3)

我不会使用LinearLayout。

RelativeLayout允许其子项的属性android:layout_centerHorizontal="true"(因此放置了NumberPicker)或甚至android:layout_centerInParent="true"(如果对齐方式也必须是垂直的)。

它还允许想要放在另一个控件右侧的子项的属性android:layout_toRightOf="@id/nameOfAnotherControl"(因此也放置了TextView)。

这就是全部

这将是您(略微)修改的布局:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >
    <NumberPicker
        android:layout_gravity="center"
        android:id="@+id/number_picker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
    />
    <TextView
        android:text="long string string"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/number_picker"
        android:layout_centerVertical="true"
    />
</RelativeLayout>

注意:我将“Linear”替换为“Relative”,并为两个控件添加了一个属性 现在NumberPicker是相对于父级的,TextView是相对于NumberPicker和父级的 我还在TextView中添加了一个额外的属性,使其垂直居中。