10

私はカスタム・ダイアログを作成しました。そのコードは以下のとおりです。問題は、ダイアログの高さがwrap_contentになっていることです。つまり、xmlで言及した高さとは関係ありません。私は他の質問をチェックした、彼らは私を助けていない。ダイアログ・フラグメントのカスタム・ダイアログの高さを変更します

public class PointsDialogFragment extends DialogFragment{ 

    private static final String TAG = PointsDialogFragment.class.getSimpleName(); 

    public static PointsDialogFragment newInstance(){ 
     PointsDialogFragment pdf = new PointsDialogFragment(); 
     Bundle newBundle = new Bundle(); 
     pdf.setArguments(newBundle); 
     return pdf; 
    } 

    private View mRoot; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     getDialog().requestWindowFeature(STYLE_NO_TITLE); 
     mRoot = inflater.inflate(R.layout.fragment_points_dialog, null); 
     return mRoot; 
    } 
} 

とfragment_points_dialog.xmlのためのXMLが

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="313dp" 
    android:layout_width="fill_parent" 
    android:background="@color/green_gradient_start" 
> 
    <RelativeLayout 
     android:layout_width="173dp" 
     android:layout_height="242dp" 
     android:background="@drawable/reward_box" 
     android:id="@+id/reward_box" 
     android:layout_alignParentLeft="true" 
    > 
     <TextView 
      android:layout_centerInParent="true" 
      style="@style/WallSectionHeading" 
      android:text="5" 
     /> 
    </RelativeLayout> 
    <RelativeLayout 
     android:layout_width="173dp" 
     android:layout_height="250dp" 
     android:background="@drawable/reward_mascot" 
     android:layout_alignParentRight="true" 
    > 
     <LinearLayout 
      android:id="@+id/reward_cloud" 
      android:layout_width="wrap_content" 
      android:layout_height="100dp" 
      android:background="@drawable/reward_cloud" 
      android:layout_alignParentBottom="true" 
     > 
      <TextView 
       android:layout_gravity="center_vertical" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="You have gained 5 Delight Points" 
       android:textColor="@color/white" 
       android:textStyle="italic" 
       android:paddingLeft="15dp" 
       android:paddingRight="10dp" 
      /> 
     </LinearLayout> 

    </RelativeLayout> 

</RelativeLayout> 

である私は、このようなダイアログを表示しています。..

PointsDialogFragment pdf = PointsDialogFragment.newInstance(); 
pdf.show(getFragmentManager(), "dialog"); 

を、私は私がの高さを変えることができる方法を知っていたいと思いますダイアログの断片に

答えて

17

私はあなたがビューを膨らませるとき、ViewParentを供給していないということが問題だと思います。このパラメータを指定しないと、ビューのルートにある "layout_X"パラメータは無視されます。その値は親に提供されます(現在の状況ではnullです)。あなたが行うことができるのは、2番目のレベルに絶対レイアウトパラメータを残して、View XMLを別のViewGroupに展開またはラップするときにViewParentを提供することです。

サンプルコード: mRoot = inflater.inflate(R.layout.fragment_points_dialog, container, false);

+0

mRoot = inflater.inflate(R.layout.fragment_points_dialog、container);この答えが正しいかどうか – Ads

2

あなたDialogFragmentのXMLでは、代わりに、それは自動的にビューのサイズを変更しますwrap_contentするRelativeLayoutを使用してlayout_heightを設定するのLinearLayoutを使用します。

アライメントの親ボトムを使用しないようにしてください。そうしないと、画面がいっぱいになります。

+0

これは私のために働く。また、子ビューが高さとしてmatch_parentを使用していないので、画面をいっぱいにしません。 – mariozawa

関連する問題