Android按钮高度

时间:2015-10-08 08:34:56

标签: android button layout

我创建了一组垂直标签,使用按钮来表示标签,我设置了按钮的高度来包装内容。

虽然按钮可以缩小以占用所有可用空间,但这似乎并未受到尊重,垂直线性布局中只有5个按钮,但它们都会拉伸以占用可用空间。按钮中的图标很小,文本也是如此,所以这看起来不太好。

如何让按钮真正包装内容?我希望它们的大小相同,并且不能填满所有可用空间。

在dp中明确设置高度是好还是坏?

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.app.FragmentTabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/light_grey">
<LinearLayout android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginLeft="8dp"
    android:layout_marginTop="10dp"
    android:layout_marginBottom="10dp"
    android:layout_marginRight="8dp">
    <FrameLayout android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="3">
        <TabWidget android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:visibility="gone"/>
        <LinearLayout
            android:id="@+id/tab_btn_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
            <Button
                android:layout_height="wrap_content"
                android:layout_width="match_parent"
                android:layout_weight="1.0"
                android:background="@color/lightest_grey"
                android:id="@+id/patient_tab_btn"
                android:text="Patient"
                android:textSize="7sp"
                android:gravity="bottom|center"
                android:drawableTop="@drawable/user"
                android:paddingTop="4dp"
                />
            <Button
                android:layout_height="wrap_content"
                android:layout_width="match_parent"
                android:layout_weight="1.0"
                android:background="@color/lightest_grey"
                android:id="@+id/relations_tab_btn"
                android:text="Relations"
                android:layout_marginTop="1dp"
                android:textSize="7sp"
                android:gravity="bottom|center"
                android:drawableTop="@drawable/family"
                android:paddingTop="4dp"
                />
            <Button
                android:layout_height="wrap_content"
                android:layout_width="match_parent"
                android:layout_weight="1.0"
                android:background="@color/lightest_grey"
                android:id="@+id/providers_tab_btn"
                android:text="Providers"
                android:layout_marginTop="1dp"
                android:textSize="7sp"
                android:gravity="bottom|center"
                android:drawableTop="@drawable/doctors_bag"
                android:paddingTop="4dp"
                />
            <Button
                android:layout_height="wrap_content"
                android:layout_width="match_parent"
                android:layout_weight="1.0"
                android:background="@color/lightest_grey"
                android:id="@+id/locations_tab_btn"
                android:text="Locations"
                android:layout_marginTop="1dp"
                android:textSize="7sp"
                android:gravity="bottom|center"
                android:drawableTop="@drawable/map_marker"
                android:paddingTop="4dp"
                />
            <Button
                android:layout_height="wrap_content"
                android:layout_width="match_parent"
                android:layout_weight="1.0"
                android:background="@color/lightest_grey"
                android:id="@+id/summary_tab_btn"
                android:text="Summary"
                android:layout_marginTop="1dp"
                android:textSize="7sp"
                android:gravity="bottom|center"
                android:drawableTop="@drawable/treatment_plan"
                android:paddingTop="4dp"
                />
            <Button
                android:layout_height="|"
                android:layout_width="match_parent"
                android:layout_weight="1.0"
                android:background="@color/lightest_grey"
                android:id="@+id/cpis_tab_btn"
                android:text="Protection"
                android:layout_marginTop="1dp"
                android:textSize="7sp"
                android:gravity="bottom|center"
                android:drawableTop="@drawable/students"
                android:paddingTop="4dp"
                />

        </LinearLayout>
    </FrameLayout>
    <FrameLayout android:id="@android:id/tabcontent"
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="17"
        android:background="@color/white"/>
</LinearLayout>
</android.support.v4.app.FragmentTabHost>

由于

2 个答案:

答案 0 :(得分:2)

按钮的layout_weight参数是导致问题的原因。如果设置了此参数,则忽略height参数。设置权重会导致所有剩余空间分配给权重与权重之比的所有子项。在您的布局中,您有6个按钮。因此,剩下的空间由6个按钮填充,所有按钮的高度设置相同。您可以限制线性布局父级的高度,也可以删除按钮的权重。 编辑:我已经提到如果设置了权重,则忽略高度。仅当LinearLayout的方向是垂直时才是这样。如果它是水平的,则忽略width属性。

答案 1 :(得分:2)

在dp中设置高度不会在不同的屏幕上保持完美的比例。

对我来说,最简单的方法是通过代码创建我的界面,这样我就可以进行所需的任何计算,并在px上设置确切的大小。

看看my post征求意见。

至于修复xml,将LinearLayout高度设置为wrap_content或删除权重,它会使按钮平均分配父高度。

希望这有帮助。