ListActivity中的列表占据整个屏幕,将自定义按钮推到外面

时间:2014-12-11 14:09:23

标签: android android-layout android-listview listactivity

ListActivity中,我必须为我的主要列表对300dp的高度进行硬编码,因为它会占据整个屏幕并按下我的2个按钮(显示取消

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="de.afarber.mynotification.MainActivity" >

    <ListView
        android:id="@android:id/list"
        android:dividerHeight="1px"
        android:layout_width="match_parent"
        android:layout_height="300dp" />

    <TextView 
        android:id="@android:id/empty"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FF0000"
        android:text="@string/no_beacons_found" />

    <Button android:id="@+id/show" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_margin="20dp"
        android:onClick="showNotification"
        android:text="@string/show_notification" />

    <Button android:id="@+id/cancel" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:layout_margin="20dp"
        android:onClick="cancelNotification"
        android:text="@string/cancel_notification" />    

</LinearLayout>

这导致以下屏幕截图:

screenshot

但我仍然不满意,因为我希望在屏幕底部对齐2个按钮。我希望列表占据按钮上方的屏幕其余部分。最后,我想知道如何正确放置文本。

请建议我做什么,在这种情况下使用哪种布局。

2 个答案:

答案 0 :(得分:1)

试试这个。我所做的是将所有按钮放到另一个布局中,该布局应该与页面底部对齐。然后我告诉列表使用layout_above

将自己定位在该布局上方
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:paddingBottom="@dimen/activity_vertical_margin"
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:paddingTop="@dimen/activity_vertical_margin"
                tools:context="de.afarber.mynotification.MainActivity">

    <ListView
            android:id="@android:id/list"
            android:dividerHeight="1px"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@id/buttons"
            />

    <LinearLayout
            android:id="@+id/buttons"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:orientation="vertical">

        <TextView
                android:id="@+id/emptyText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#FF0000"/>

        <Button
                android:id="@+id/show"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_margin="20dp"
                android:onClick="showNotification"
                android:text="TEXT"/>

        <Button
                android:id="@+id/cancel"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_margin="20dp"
                android:onClick="cancelNotification"
                android:text="TEXT"/>

    </LinearLayout>

</RelativeLayout>

对于空文本,只需跳过声明中的android:text="TEXT"

答案 1 :(得分:0)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="de.afarber.mynotification.MainActivity" >

<ListView
    android:id="@android:id/list"
    android:dividerHeight="1px"
    android:layout_width="match_parent"
    android:layout_weight="1"
    android:layout_height="0dp" />

<TextView 
    android:id="@android:id/empty"
    android:layout_width="match_parent"
     android:layout_weight="1"
    android:layout_height="0dp"
    android:background="#FF0000"
    android:text="@string/no_beacons_found" />

<Button android:id="@+id/show" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="20dp"
    android:onClick="showNotification"
    android:text="@string/show_notification" />

<Button android:id="@+id/cancel" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:layout_margin="20dp"
    android:onClick="cancelNotification"
    android:text="@string/cancel_notification" />