2012-02-16 2 views
4

'Theme.Holo.Light.Dialog'から継承したカスタムテーマを作成しました。Android - カスタムダイアログのカスタムテーマの指定AlertDialog.Builderはダイアログ内でコンテンツをラップします

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<style name="cust_dialog" parent="@android:style/Theme.Holo.Light.Dialog"> 
</style> 
</resources> 

マイコード:

private AlertDialog testDialog; 
AlertDialog.Builder testBuilder; 
LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE); 
View layout = inflater.inflate(R.layout.test_dialog, 
            (ViewGroup) findViewById(R.id.test_root)); 
testBuilder = new AlertDialog.Builder(this, R.style.cust_dialog); 
testBuilder.setView(layout); 
testBuilder.setTitle("Support"); 
testDialog = testBuilder.create(); 
testDialog.show(); 

これは私のダイアログは、ダイアログ内にあることが原因となります。これをどうやって解決するのですか?

ありがとうございました。

EDIT ::::

これは私のtest_dialog.xmlレイアウトです:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/test_root" 
      android:orientation="horizontal" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      > 


     <Button 
      android:id="@+id/test1" 
      android:layout_width="300dp" 
      android:layout_height="75dp" 
      android:text="@string/test" 

      android:gravity="center" /> 

     <Button 
      android:id="@+id/test2" 
      android:layout_width="300dp" 
      android:layout_height="75dp" 
      android:text="@string/test" 
      android:layout_below="@id/test1" 
      android:gravity="center" /> 

</RelativeLayout> 
+1

多分あなたの 'R.layout.test_dialog'には単なるコンテンツ以上のものがありますか? 'setView()': "カスタムビューをダイアログの内容に設定する"ここにダイアログレイアウト全体を追加すると、ダイアログ内にダイアログが表示されます。 – zapl

+0

私はtest_dialogレイアウトxmlを追加しました。私はそこに2つのボタンを持っているものは何もない。 – CLDev

+0

膨張中に指定したルート要素が原因である可能性があります。単に 'View layout = inflater.inflate(R.layout.test_dialog、null);で試してみてください。そうしないと、レイアウトが膨らんでしまいます。 – zapl

答えて

5

これを試してみてください。

ContextThemeWrapper ctw = new ContextThemeWrapper(this, R.style.MyTheme); 
      AlertDialog.Builder builder= new AlertDialog.Builder(ctw); 
      LayoutInflater inflater = (LayoutInflater) ctw.getSystemService(LAYOUT_INFLATER_SERVICE); 
      View view = inflater.inflate(R.layout.customdialogue, 
              (ViewGroup) findViewById(R.id.layout_root)); 
+1

'ContextThemeWrapper ctw =新しいContextThemeWrapper(this、R.style.MyTheme); AlertDialog.Builder builder =新しいAlertDialog.Builder(ctw); 'この問題を解決しました。 – howettl

0

そうではありませんusuall文脈によってレイアウトのためのInflaterを得ることは非常に重要ですが、コンテキストラッパーのコンテキストを経て...

0

あなたが試すことができ、その時点で少しもstruggeledこの

AlertDialog.Builder builder = new AlertDialog.Builder(activity, R.layout.test_dialog); 
関連する問題