web-dev-qa-db-ja.com

wrap_contentがフルスクリーンで表示されるダイアログフラグメント。フルスクリーンではなく、レイアウトの高さとして作成するにはどうすればよいですか?

次のように、カスタムダイアログフラグメントとそのxmlを作成しました。

<?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="wrap_content"
    Android:layout_margin="5dp"

    Android:padding="5dip" >

    <ListView
        Android:id="@+id/product_list"
         Android:background="@drawable/border_details"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
         />

    <RelativeLayout
        Android:id="@+id/AddtoCart"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_alignParentBottom="true"
        Android:layout_marginTop="10dp"

        Android:background="#005959" >

        <Button
            Android:id="@+id/button_addToCart"
            Android:layout_width="250dp"
            Android:layout_height="wrap_content"
            Android:layout_centerInParent="true"
            Android:background="@drawable/gradient_button"
            Android:layout_marginTop="2dp"
            Android:layout_marginBottom="2dp"
            Android:text="@string/add_to_cart"
            Android:textColor="#000000" />
    </RelativeLayout>

</RelativeLayout>

このダイアログを呼び出すと、スクリーンショットに示されているように全画面表示されます。

ScreenShot

このダイアログのサイズをリストとボタンの高さに制限するにはどうすればよいですか?

余分な空白を削除するにはどうすればよいですか?

17
ravindra.kamble

次のように、RelativeLayoutLinearLayoutに変更し、リストのweightを1に設定することで解決しました。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_margin="5dp"
   Android:orientation="vertical"
    Android:padding="5dip" >

    <ListView
        Android:id="@+id/product_list"
         Android:background="@drawable/border_details"
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:layout_weight="1"
         />
    <RelativeLayout 
    Android:id="@+id/AddtoCart"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_gravity="bottom"
    Android:layout_marginTop="10dp"
    Android:background="#005959" >

    <Button
        Android:id="@+id/button_addToCart"
        Android:layout_width="250dp"
        Android:layout_height="wrap_content"
        Android:layout_centerInParent="true"
        Android:layout_marginBottom="2dp"
        Android:layout_marginTop="2dp"
        Android:background="@drawable/gradient_button"
        Android:text="@string/add_to_cart"
        Android:textColor="#000000" />

</RelativeLayout>
</LinearLayout>
26
ravindra.kamble

下部の相対レイアウトにAndroid:layout_alignParentBottom="true"を指定したので、親の相対レイアウトの高さは静的ではないため、画面の下部になります。

解決:

  1. 下部の相対レイアウトの参照を次のように変更できます->下部(下)をリストビューに揃えます
  2. または、下部のレイアウトをリストビューのフッターとして設定することもできます
  3. または、ラップコンテンツとして高さを持つ親相対レイアウトの代わりに、線形レイアウト垂直を使用します
  4. または、親の相対レイアウトに静的な高さを指定して、下部の相対レイアウトが親の相対レイアウトの高さを取得し、親の相対レイアウトの下部に配置されるようにします(リストビューに下部の相対レイアウトの上部を配置することを忘れないでください)
12