wrap_content在LinearLayout中不起作用

时间:2014-03-03 11:59:11

标签: android android-layout

enter image description here 以下代码中的两个button设置为wrap_content且没有填充。但是,垂直方向仍有一些填充。如果我将android:layout_height设置为固定参数,则填充可能会消失。但我确实想使用wrap_content而不是固定的高度。

编辑: 现在,我必须使用DIP(不推荐使用)作为文本大小,以确保在DIP中使用固定高度时按钮中的文本。期待更好的解决方案!

<LinearLayout 
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_marginBottom="5dp">

                <LinearLayout 
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1.0"
                    android:layout_marginLeft="5dp"
                    android:orientation="vertical">

                    <TextView 
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/account_balance"/>

                    <LinearLayout 
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal">

                        <TextView 
                            android:id="@+id/tvBa"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"/>

                        <ImageButton 
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="#00000000"
                            android:src="@drawable/video_list_price"/>
                    </LinearLayout>
                </LinearLayout>

                <Button 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@drawable/record_selector"
                    android:gravity="center"
                    android:textColor="#ffffffff"
                    android:text="@string/charge_record"/>

                <Button 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:background="@drawable/charge_selector"
                    android:gravity="center"
                    android:textColor="#ffffffff"
                    android:text="@string/charge"/>
            </LinearLayout>

2 个答案:

答案 0 :(得分:0)

默认情况下,容器内容对齐顶部。

            <LinearLayout 
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1.0"
                android:layout_marginLeft="5dp"
                android:orientation="vertical">

                <TextView 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/account_balance"/>

                <LinearLayout 
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <TextView 
                        android:id="@+id/tvBa"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"/>

                    <ImageButton 
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:background="#00000000"
                        android:src="@drawable/video_list_price"/>
                </LinearLayout>
            </LinearLayout>

与Button相比,这个内容的高度更高。

            <Button 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/record_selector"
                android:gravity="center"
                android:textColor="#ffffffff"
                android:text="@string/charge_record"/>

所以实际上按钮现在没有填充,但由于你的根LinearLayout的第一项,它占用的空间更多。

在根LinearLayout中再添加一个属性。的机器人:重力= “center_vertical”

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="5dp"
    android:orientation="horizontal" 
    android:gravity="center_vertical"
    android:background="#756846">

答案 1 :(得分:0)

删除此行:

android:layout_weight="1.0"

并将0dp值更改为wrap_content

- EDITED

您有两个潜在的填充来源: 第一个是初始按钮背景尺寸 - 它不会按比例缩小,只有

第二个是按钮的默认样式 - 只需设置padding = 0dp