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

これらの場合、下に他の非表示のダミー ボタンを作成し、「実際の」ボタンが正しく配置されるように配置します。

ダミー ボタンが画面からはみ出しても、実際のボタンはその上にあります。画面に何もない場合は、ダミー ボタンが一番下にあり、「本物の」ボタンが真ん中にあります。

width = "1dp" と height を必要なだけ "見えない" ボタンにします。ただし、ANandroid の意味でそれらを表示したままにします

編集: リストビューの下部に下部を揃えて 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 に答える