2017-01-13 8 views
0

私はカスタムレイアウトを使ってダイアログを表示しています。ここではレイアウトがあります:Android - カスタムダイアログレイアウトの高さをwrap_contentに設定

<?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:orientation="vertical" 
    > 
    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      > 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="20sp" 
       android:textStyle="bold" 
       android:id="@+id/dialog_title_tv" 
       android:text="Dialog Title" 
       /> 
     <android.support.design.widget.TextInputLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:padding="16dp" 
      > 
      <android.support.design.widget.TextInputEditText 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:hint="Enter Phone Number" 
       /> 
     </android.support.design.widget.TextInputLayout> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:padding="8dp" 
      > 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Select Country: " 
       android:padding="8dp" 
       /> 
      <Spinner 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:padding="8dp" 
       android:id="@+id/country_spinner" 
       /> 
     </LinearLayout> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:padding="8dp" 
      > 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Select City: " 
       android:padding="8dp" 
       /> 
      <Spinner 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:padding="8dp" 
       android:id="@+id/city_spinner" 
       /> 
     </LinearLayout> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:padding="8dp" 
      > 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Select Area: " 
       android:padding="8dp" 
       /> 
      <Spinner 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:padding="8dp" 
       android:id="@+id/area_spinner" 
       /> 
     </LinearLayout> 
     </LinearLayout> 
    </ScrollView> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:gravity="right" 
     > 
     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Done" 
      /> 
    </LinearLayout> 
</LinearLayout> 

それは次のように示しています

enter image description here

しかし、私はWRAP_CONTENTとして、その高さを設定します。現在、画面全体を占めています。これどうやってするの?私は間違って何をしていますか?事前に感謝

+0

スクロールビューの内側に完了ボタンを表示し、正常に動作していることを確認してください。 – Redman

+0

0dpを試しましたか? –

+0

あなたはそれを警告ダイアログまたはポップアップウィンドウとして膨張させていますか? – Redman

答えて

2

は、このレイアウトのコードを試してみてください。

<?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:orientation="vertical"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1"> 

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

      <TextView 
       android:id="@+id/dialog_title_tv" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Dialog Title" 
       android:textSize="20sp" 
       android:textStyle="bold" /> 

      <android.support.design.widget.TextInputLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:padding="16dp"> 

       <android.support.design.widget.TextInputEditText 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:hint="Enter Phone Number" /> 
      </android.support.design.widget.TextInputLayout> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal" 
       android:padding="8dp"> 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:padding="8dp" 
        android:text="Select Country: " /> 

       <Spinner 
        android:id="@+id/country_spinner" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:padding="8dp" /> 
      </LinearLayout> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal" 
       android:padding="8dp"> 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:padding="8dp" 
        android:text="Select City: " /> 

       <Spinner 
        android:id="@+id/city_spinner" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:padding="8dp" /> 
      </LinearLayout> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal" 
       android:padding="8dp"> 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:padding="8dp" 
        android:text="Select Area: " /> 

       <Spinner 
        android:id="@+id/area_spinner" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:padding="8dp" /> 
      </LinearLayout> 
     </LinearLayout> 
    </ScrollView> 

    <RelativeLayout 
     android:id="@+id/AddtoCart" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom"> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:text="Done" /> 

    </RelativeLayout> 
</LinearLayout> 
+0

お返事ありがとうございました!これはうまく動作します。 – Asym

0

あなたはこれらを試してみたいことがあります。

  • 設定android:layout_weight="1"あなたScrollView
  • セットandroid:layout_height内(DPで)いくつかの静的な高さに。
  • 親をLinearLayoutからRelativeLayoutに変更してください。
1
<?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:background="#1a000000" 
    android:layout_margin="16dp" 
    android:padding="16dp"> 
    <TextView 
     android:id="@+id/dialog_header" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textSize="20sp" 
     android:text="My Dialog" 
     android:fontFamily="sans-serif-condensed" 
     android:textStyle="bold"/> 
    <android.support.design.widget.TextInputLayout 
     android:id="@+id/text_input_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/dialog_header" 
     android:layout_marginTop="8dp"> 
     <android.support.design.widget.TextInputEditText 
      android:id="@+id/text_input_edit_text" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:textSize="16sp" 
      android:hint="Enter phone number"/> 
    </android.support.design.widget.TextInputLayout> 
    <TextView 
     android:id="@+id/select_country_label" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Select Country:" 
     android:layout_toStartOf="@+id/country_spinner" 
     android:layout_alignBottom="@+id/country_spinner" 
     android:textSize="14sp" 
     android:fontFamily="sans-serif-condensed" 
     android:textStyle="bold"/> 
    <Spinner 
     android:id="@+id/country_spinner" 
     android:layout_width="150dp" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/text_input_layout" 
     android:layout_alignParentEnd="true" 
     android:layout_marginTop="8dp"/> 
    <TextView 
     android:id="@+id/select_city_label" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Select City:" 
     android:layout_toStartOf="@+id/city_spinner" 
     android:layout_alignBottom="@+id/city_spinner" 
     android:textSize="14sp" 
     android:fontFamily="sans-serif-condensed" 
     android:textStyle="bold"/> 
    <Spinner 
     android:id="@+id/city_spinner" 
     android:layout_width="150dp" 
     android:layout_height="wrap_content" 
     android:prompt="Select One" 
     android:layout_below="@+id/country_spinner" 
     android:layout_alignParentEnd="true" 
     android:layout_marginTop="8dp"/> 
    <TextView 
     android:id="@+id/select_area_label" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Select Area:" 
     android:layout_toStartOf="@+id/area_spinner" 
     android:layout_alignBottom="@+id/area_spinner" 
     android:textSize="14sp" 
     android:fontFamily="sans-serif-condensed" 
     android:textStyle="bold"/> 
    <Spinner 
     android:id="@+id/area_spinner" 
     android:layout_width="150dp" 
     android:layout_height="wrap_content" 
     android:prompt="Select One" 
     android:layout_below="@+id/city_spinner" 
     android:layout_alignParentEnd="true" 
     android:layout_marginTop="8dp"/> 

    <TextView 
     android:id="@+id/done" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="done" 
     android:textAllCaps="true" 
     android:layout_below="@+id/area_spinner" 
     android:layout_alignParentEnd="true" 
     android:layout_marginTop="24dp" 
     android:textSize="14sp" 
     android:paddingTop="16dp" 
     android:paddingBottom="16dp" 
     android:textColor="#00f"/> 
    <TextView 
     android:id="@+id/cancel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="cancel" 
     android:textAllCaps="true" 
     android:layout_below="@+id/area_spinner" 
     android:layout_toStartOf="@+id/done" 
     android:layout_marginTop="24dp" 
     android:layout_marginEnd="24dp" 
     android:textSize="14sp" 
     android:paddingTop="16dp" 
     android:paddingBottom="16dp" 
     android:textColor="#00f"/> 

</RelativeLayout> 

ちょうどあなたのカスタムダイアログレイアウトに上記のXMLコードをコピー&ペースト。あなたはすでに正しいとして答えをマークしたものの

、私はので、それはあなたのコードの効率が向上しますビューのないネストを、持っていない

  1. 、次のような理由で、この を掲示しています。
  2. これは、ダイアログボックスを構築するAndroidデザインガイドラインに従います。
  3. 私は、スタックオーバーフローで、既存のソリューションのバグを修正する代わりに最適なソリューションを提供することがより重要であると感じています。

P.S:これは、ダイアログボックスの非スクロールビューのバージョンです。 コンテンツは少ないのでスクロール可能なバージョンが必要な場合はコメントしてください。 は若干異なる実装を持ちますが、順番に の出力が少し異なります。

関連する問題