如何在线性布局中获得正确的重量以正确对齐按钮?

时间:2012-08-22 18:52:57

标签: android button imagebutton

我正在尝试配置我的按钮布局,但无法使结构正确形成。当我在VM上运行代码时,它使得ImageButton广告占据屏幕的百分之五十,尽管重量仅为10%。每个图像按钮引用存储在drawable-ldpi中的图像,每个图像的大小约为1 KB,活动代码是基本的,没有添加,这是目前通过主xml的纯图形界面。

预期布局:

 _______________________
|        logo          |
|______________________|
|       search         |
|______________________|
|                      |
|     featured         |
|                      |
|______________________|
|    |     |     |     |
|    |     |     |     |
|    |     |     |     |
|    |     |     |     |
|    |     |     |     |
|    |     |     |     |
|    |     |     |     |
|____|_____|_____|_____|
|     advertisement    |
|______________________|

ANDROID MAIN.XML代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainlayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/toplayout"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_weight="45"
        android:gravity="top"
        android:orientation="vertical" >

        <ImageButton
            android:id="@+id/mytastelogo"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_weight="15"
            android:src="@drawable/mytastelogo_image" />

        <ImageButton
            android:id="@+id/search"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_weight="10" />

        <ImageButton
            android:id="@+id/featuredpanel"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_weight="20" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/bottomlayout"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_weight="45"
        android:gravity="bottom"
        android:orientation="horizontal" >

        <ImageButton
            android:id="@+id/mycollection"
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:src="@drawable/mycollection_image" />

        <ImageButton
            android:id="@+id/myrecommendations"
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:src="@drawable/myrecommendations_image" />

        <ImageButton
            android:id="@+id/topitems"
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:src="@drawable/topitems_image" />

        <ImageButton
            android:id="@+id/randomitem"
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:src="@drawable/randomitem_image" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/adlayout"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_weight="10"
        android:gravity="end" >

        <ImageButton
            android:id="@+id/advertisement"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

</LinearLayout>

3 个答案:

答案 0 :(得分:1)

试试吧: - )

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<LinearLayout
    android:id="@+id/toplayout"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="45"
    android:gravity="top"
    android:orientation="vertical" >

    <ImageButton
        android:id="@+id/mytastelogo"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="15" />

    <ImageButton
        android:id="@+id/search"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="10" />

    <ImageButton
        android:id="@+id/featuredpanel"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="20" />
</LinearLayout>

<LinearLayout
    android:id="@+id/bottomlayout"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="45"
    android:gravity="bottom"
    android:orientation="horizontal" >

    <ImageButton
        android:id="@+id/mycollection"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" />

    <ImageButton
        android:id="@+id/myrecommendations"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" />

    <ImageButton
        android:id="@+id/topitems"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" />

    <ImageButton
        android:id="@+id/randomitem"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" />
</LinearLayout>

<LinearLayout
    android:id="@+id/adlayout"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="10" >

    <ImageButton
        android:id="@+id/advertisement"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

答案 1 :(得分:0)

当您的方向为layout_height时,您需要将0dp设置为vertical。如果是horizontal,请将layout_width设置为0dp

例如:

<LinearLayout
        android:id="@+id/toplayout"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="45"
        android:gravity="top"
        android:orientation="vertical" >

答案 2 :(得分:-1)

所有具有确定其高度的权重的项目都应该将android:layout_height设置为0dp。

android:layout_height="0dp"

同样,对于宽度由重量决定的项目,您必须设置

android:layout_width="0dp"