Android布局设计 - 如何在xml(布局)中获取屏幕高度

4

我需要设计屏幕。我想把页脚栏放在列表下方。 请看这里:

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

<!-- Header -->
<LinearLayout android:id="@+id/header"
    android:background="#0099CC"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent">

    <TextView android:id="@+id/routeCode"
        android:layout_height="fill_parent"
        android:layout_width="wrap_content"
        android:text="Code"
        android:width="100dip"
        android:height="30dip"
        android:textColor="@color/black"
        android:gravity="center_horizontal"
    />
    <TextView android:id="@+id/routeName"
        android:layout_height="fill_parent"
        android:layout_width="wrap_content"
        android:text="Name"
        android:width="150dip"
        android:height="30dip"
        android:textColor="@color/black"
        android:gravity="center_horizontal"
    />
    <TextView android:id="@+id/outlets"
        android:layout_height="fill_parent"
        android:layout_width="wrap_content"
        android:text="Outlets"
        android:width="60dip"
        android:height="30dip"
        android:textColor="@color/black"
        android:gravity="center_horizontal"
    />
</LinearLayout>

<!-- List Divider -->
<View android:layout_width="fill_parent"
    android:layout_height="1dip"
    android:background="?android:attr/listDivider" />

    <!-- ListView (grid_items) -->
    <LinearLayout android:id="@+id/layout"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content" 
                                        android:layout_weight="1" >

        <ListView android:id="@android:id/list"
                  android:layout_height="405dp"
                  android:layout_width="fill_parent">
        </ListView>

        <TextView android:id="@id/android:empty"
                  android:layout_width="fill_parent" 
                  android:gravity="center_vertical"
                  android:layout_height="fill_parent" 
                  android:layout_marginTop="25dp" 
                  android:text="No Sales Routes Define By Admin" />
    </LinearLayout>

     <!-- Footer -->
    <RelativeLayout android:id="@+id/header"
        android:background="#000000"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent">

        <Button android:text="Exit" 
                android:id="@+id/button1" 
                android:background="#0099FF"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_marginLeft="8dp"
                android:onClick="onExitAction">
        </Button>

        <Button android:layout_width="wrap_content" 
                android:text="Next" 
                android:background="#0099FF"
                android:layout_height="wrap_content" 
                android:layout_marginRight="8dp"
                android:id="@+id/button2" 
                android:layout_alignParentTop="true" 
                android:layout_alignParentRight="true"
                android:onClick="onNextAction">
       </Button>
    </RelativeLayout>
</LinearLayout>

问题是如果列表中没有数据或只有几行可用,那么底部栏将出现。如何解决这个问题?我想在下面的部分中固定它,不希望它出现...
当我添加这段代码 android:layout_weight="1" 时,它会变成这样: enter image description here 这是我的选项卡 XML 部分;
     <?xml version="1.0" encoding="utf-8"?>

   <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fadingEdge="horizontal">

    <RelativeLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
         >

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:textColor="#ffffff" />

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="56dp"
            android:gravity="bottom"
            android:tabStripEnabled="true"
            android:layout_alignParentBottom="true"/>

    </RelativeLayout>
   </TabHost>

我希望在选项卡上方有一个条形菜单。
请帮助我。
提前致谢。
4个回答

2

您应该为包含ListViewLinearLayout使用权重:

<LinearLayout android:id="@+id/layout"
              android:layout_width="wrap_content"
              android:layout_height="0dip"
              android:layout_weight="1" >

编辑: 使用以下布局来制作“选项卡”:

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

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="1"
            android:textColor="#ffffff"/>

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="56dp"
            android:gravity="bottom"
            android:tabStripEnabled="true"/>
    </LinearLayout>
</TabHost>

谢谢,它正在工作...但我有问题...我在底部有一个选项卡,在选项卡上面我想设置页脚栏...目前它会到选项卡后面和屏幕底部... - Piraba
你怎么添加这个选项卡?如果它是在xml中,能否请您将此代码添加到问题中。很遗憾,我无法通过这个描述清楚地理解问题。 - Michael

2
尝试这段代码:
<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout android:id="@+id/main"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:background="@drawable/icon">

<!-- Header -->
<LinearLayout android:id="@+id/header"
    android:background="#0099CC"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent">

    <TextView android:id="@+id/routeCode"
        android:layout_height="fill_parent"
        android:layout_width="wrap_content"
        android:text="Code"
        android:width="100dip"
        android:height="30dip"
        android:gravity="center_horizontal"
    />
    <TextView android:id="@+id/routeName"
        android:layout_height="fill_parent"
        android:layout_width="wrap_content"
        android:text="Name"
        android:width="150dip"
        android:height="30dip"
        android:gravity="center_horizontal"
    />
    <TextView android:id="@+id/outlets"
        android:layout_height="fill_parent"
        android:layout_width="wrap_content"
        android:text="Outlets"
        android:width="60dip"
        android:height="30dip"
        android:gravity="center_horizontal"
    />
</LinearLayout>

<!-- List Divider -->
<View
    android:id="@+id/myView" 
    android:layout_width="fill_parent"
    android:layout_height="1dip"
    android:background="?android:attr/listDivider"
    android:layout_below="@+id/header" />

    <!-- ListView (grid_items) -->
    <LinearLayout android:id="@+id/layout"
                  android:layout_below="@+id/myView"    
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content" >

        <ListView android:id="@android:id/list"
                  android:layout_height="wrap_content"
                  android:layout_width="fill_parent">
        </ListView>

        <TextView android:id="@id/android:empty"
                  android:layout_width="fill_parent" 
                  android:gravity="center_vertical"
                  android:layout_height="fill_parent" 
                  android:layout_marginTop="25dp" 
                  android:text="No Sales Routes Define By Admin" />
    </LinearLayout>

     <!-- Footer -->
    <RelativeLayout
       android:layout_alignParentBottom="true"  
       android:id="@+id/MyRelative"
        android:background="#000000"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_gravity="bottom">

        <Button android:text="Exit" 
                android:id="@+id/button1" 
                android:background="#0099FF"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_marginLeft="8dp"
                android:onClick="onExitAction">
        </Button>

        <Button android:layout_width="wrap_content" 
                android:text="Next" 
                android:background="#0099FF"
                android:layout_height="wrap_content" 
                android:layout_marginRight="8dp"
                android:id="@+id/button2" 
                android:layout_alignParentTop="true" 
                android:layout_alignParentRight="true"
                android:onClick="onNextAction">
       </Button>
    </RelativeLayout>
</RelativeLayout>

我已经根据您的代码更改了<TabWidget android:layout_weight="0">。 - Piraba

1

这应该可以工作

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

<!-- Header -->
<LinearLayout android:id="@+id/header"
    android:background="#0099CC"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent">

    <TextView android:id="@+id/routeCode"
        android:layout_height="fill_parent"
        android:layout_width="wrap_content"
        android:text="Code"
        android:width="100dip"
        android:height="30dip"
        android:textColor="#000000"
        android:gravity="center_horizontal"
    />
    <TextView android:id="@+id/routeName"
        android:layout_height="fill_parent"
        android:layout_width="wrap_content"
        android:text="Name"
        android:width="150dip"
        android:height="30dip"
        android:textColor="#000000"
        android:gravity="center_horizontal"
    />
    <TextView android:id="@+id/outlets"
        android:layout_height="fill_parent"
        android:layout_width="wrap_content"
        android:text="Outlets"
        android:width="60dip"
        android:height="30dip"
        android:textColor="#000000"
        android:gravity="center_horizontal"
    />
</LinearLayout>

<!-- List Divider -->
<View android:layout_width="fill_parent"
    android:layout_height="1dip"
    android:background="?android:attr/listDivider" />

    <!-- ListView (grid_items) -->
    <LinearLayout android:id="@+id/layout"
                  android:layout_width="wrap_content"
                  android:layout_height="0dip"
                  android:layout_weight="1.0" >

        <ListView android:id="@android:id/list"
                  android:layout_height="fill_parent"
                  android:layout_width="fill_parent">
        </ListView>

        <TextView android:id="@id/android:empty"
                  android:layout_width="fill_parent" 
                  android:gravity="center_vertical"
                  android:layout_height="fill_parent" 
                  android:layout_marginTop="25dp" 
                  android:text="No Sales Routes Define By Admin" />
    </LinearLayout>

     <!-- Footer -->
    <RelativeLayout  android:layout_width="fill_parent"
                   android:layout_height="wrap_content"
                   android:orientation="horizontal">
        <Button android:text="Exit" 
                android:id="@+id/button1" 
                android:background="#0099FF"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_marginLeft="8dp"
                android:onClick="onExitAction"/>

        <Button android:layout_width="wrap_content" 
                android:text="Next" 
                android:background="#0099FF"
                android:layout_height="wrap_content" 
                android:layout_marginRight="8dp"
                android:id="@+id/button2"
                android:layout_alignParentRight="true" 
                android:onClick="onNextAction"/>
    </RelativeLayout>
</LinearLayout>

0

我建议您将主容器设置为RelativeLayout,然后在页脚容器上设置android:layout_alignParentBottom="true"

。这样可以实现底部对齐的效果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接