目前,我有一个LinearLayout带有NumberPicker&TextView(带有文本“长字符串”)
这不是我想实现的。我希望实现的是
NumberPicker将位于水平中心
“长字符串”TextView将正好位于NumberPicker的右侧。
下面的布局不起作用。因为它将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
<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不再在中间)
有什么建议可以达到我想要的布局吗?

最佳答案

我不会用线性布局。
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>

注意:我用“relative”替换了“linear”,并为两个控件添加了一个属性。
现在numberpicker相对于父对象,textview相对于numberpicker和父对象。
我还向textview添加了一个额外的属性,使其垂直居中。

关于android - 如何将2个子小部件中的一个子小部件居中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22357796/

10-12 05:14