在底部有一个带有滚动视图和持久性按钮的对话框

时间:2012-07-02 20:03:36

标签: android android-dialog

我在创建对话框的布局时遇到问题我想要显示带有滚动视图的对话框但是按钮始终显示在底部,但是当滚动视图太大时,它会将屏幕底部的按钮推出。

如果我将父母底部的按钮对齐为true,我可以获得所需的效果但是如果滚动视图中的内容很少,则会有一个带有大量空白空间的大对话框。

这是我目前拥有的

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

    <ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

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

        <TextView
            android:id="@+id/staCalCompany"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="30dp"
            android:text="Company Name"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#ff2525"
            android:textSize="25sp" />

        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/staCalStart"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="15dp"
                android:text="Start:"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="#ff2525" />

            <TextView
                android:id="@+id/staCalStartDisp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="Start Time"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/linearLayout2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp" >

            <TextView
                android:id="@+id/staCalEnd"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="15dp"
                android:text="End:"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="#ff2525" />

            <TextView
                android:id="@+id/staCalEndDisp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="End Time"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </LinearLayout>

        <TextView
            android:id="@+id/staCalSubDisp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="15dp"
            android:text="Name"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#ff2525" />

        <TextView
            android:id="@+id/staCalDesc"
            android:layout_width="285dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:layout_marginLeft="15dp"
            android:text="Description"
            android:textAppearance="?android:attr/textAppearanceMedium" />
        </LinearLayout>
        </ScrollView>

<RelativeLayout
            android:id="@+id/linearLayout3"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:layout_gravity="bottom|center_horizontal" 
            android:gravity="center_horizontal" 
            android:layout_below="@+id/scrollView1">

            <ImageButton
                android:id="@+id/calIconSync"
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:layout_marginLeft="20dp"
                android:background="@drawable/calendar_plus" />

            <ImageButton
                android:id="@+id/btnStaCalClose"
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:layout_alignParentRight="true"
                android:layout_marginRight="20dp"
                android:background="@drawable/closepopup" />
        </RelativeLayout>

试图让它在横向和纵向模式下正确显示,但是当一个工作时,另一个工作则没有。

关于如何做到这一点的任何建议?

1 个答案:

答案 0 :(得分:0)

在这些情况下,我只是在下面创建一些其他隐形虚拟按钮,并将它们对齐,以便我的“真实”按钮正确定位。

如果虚拟按钮被推离屏幕,那么真正的按钮就在它们上方。 如果屏幕上有小东西,虚拟按钮位于底部,“真实”按钮位于中间位置。

根据需要制作宽度=“1dp”和高度的“隐形”按钮。但是在ANdroid意义上可以看到它们

编辑: 您可以创建一个relativeview,将其底部与列表视图的底部对齐,并为其赋予maxHeight。将您的按钮对齐在此相对视图下方。当listview很小时,你的按钮将位于它的正下方,如果你的listview很长,相对视图超过maxHeight并确保它仍然在屏幕上,所以你的按钮将在maxHeight的正下方。确保relativeView的maxHeight在屏幕底部留下足够的空间用于按钮。

要调整maxHeight以便为任何屏幕尺寸的按钮留出足够的空间,您可以使用它来获取设备的屏幕尺寸并相应地调整maxHight到屏幕高度:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int screenHheight = size.y;

希望在你的情况下也有帮助...