android:子视图的fill_parent填充屏幕

时间:2011-08-09 21:37:52

标签: android relativelayout fill-parent

我正在尝试复制一个微调控制器(请不要问为什么)我正在与分频器挣扎。假的微调器看起来很好,直到我将分隔符添加到imageview的左侧。一旦我添加了分隔符,它的高度就会填满屏幕的剩余部分。有人可以解释一下吗?

以下xml:

.......

        <Spinner 
            android:id="@+id/equipment_spinner"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <Button
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"/>
            <ImageView
                android:id="@+id/spinner_arrow"
                android:layout_width="45sp"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:src="@drawable/spinner_arrow"/>
        </RelativeLayout>
    </LinearLayout>    
</ScrollView>

生成以下屏幕:

enter image description here

一旦我添加了分隔符,xml就像这样:

        <Spinner 
            android:id="@+id/equipment_spinner"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <Button
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"/>
            <ImageView
                android:id="@+id/spinner_arrow"
                android:layout_width="45sp"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:src="@drawable/spinner_arrow"/>
            <View
                android:background="#e7ebe7"
                android:layout_width="1dip"
                android:layout_height="fill_parent"
                android:layout_toLeftOf="@id/spinner_arrow"/>
        </RelativeLayout>
    </LinearLayout>    
</ScrollView>

生成以下屏幕:

enter image description here enter image description here 谁能发现我在这里做错了什么?...

2 个答案:

答案 0 :(得分:2)

您应该使用九个补丁图像而不是使用多个视图。这就是默认的Spinner所做的。我不知道你为什么要创建一个新的微调器,但如果你保持视觉效果相同,你可以重复使用内置图像。

android.R.layout.simple_spinner_item是您可以重复使用的TextView布局。或者,您可以直接获取背景:android.R.drawable.btn_dropdown,这是一个XML选择器,可以为每个状态绘制位图。 Android源代码中提供了更多详细信息。

答案 1 :(得分:1)

您将高度设置为填充父级,填充相对布局的其余部分。您是否尝试过将按钮放在按钮或imageview中,如下所示:

<Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true">
        <View
            android:background="#e7ebe7"
            android:layout_width="1dip"
            android:layout_height="fill_parent"
            android:layout_toLeftOf="@id/spinner_arrow"/>
</Button>
        <ImageView
            android:id="@+id/spinner_arrow"
            android:layout_width="45sp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:src="@drawable/spinner_arrow"/>
    </RelativeLayout>

<Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"/>
        <ImageView
            android:id="@+id/spinner_arrow"
            android:layout_width="45sp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:src="@drawable/spinner_arrow">
            <View
            android:background="#e7ebe7"
            android:layout_width="1dip"
            android:layout_height="fill_parent"
            android:layout_toLeftOf="@id/spinner_arrow"/>
</ImageView>
    </RelativeLayout>

如果这不起作用,请尝试将相对布局的高度设置为固定量,例如10 dip或者旋转器的大小......您可能必须尝试不同大小的fiew,只是不要将relativelayout作为换行内容< / p>