0

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

如果我将父级底部的按钮对齐到 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>

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

关于如何去做这件事的任何建议?

4

1 回答 1

0

在这些情况下,我只是在下面创建一些其他不可见的虚拟按钮,并以这样的方式对齐它们,以使我的“真实”按钮正确定位。

如果虚拟按钮被推离屏幕没问题,那么真正的按钮就在它们上面。如果屏幕上的东西很少,则虚拟按钮位于底部,而“真实”按钮位于中间某处。

根据需要制作宽度=“1dp”和高度的“不可见”按钮。但让它们在 Android 意义上可见

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

要调整 maxHeight 以便为任何屏幕尺寸上的按钮留出足够的空间,您可以使用它来获取设备的屏幕尺寸并根据 screenHeight 调整 maxHight:

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

希望对您的情况也有帮助...

于 2012-07-02T20:10:42.267 回答