2012-02-15 45 views
8

私はカスタムダイアログを作成しています。タイトルバーの背景を変更する方法を知りたいと思います。Android - カスタムダイアログの背景を変更する

私は2つのアプローチを試みた:

1 - 私はAlertDialog.Builder方法を試してみた 'setCustomTitle'。私はレイアウト幅と高さ 'match_parent'と背景色を持つテキストビューからなる単純なレイアウトビューを作成しました。アプリを実行すると、タイトルバーの上半分だけが背景色を表示しています。下半分にはまだデフォルトテーマの背景色が表示されています。なぜ誰が知っていますか?

2 - 自分のダイアログテーマを作成しました。 Iveは親の継承を持つスタイルを '@android:style/Theme.Holo.Light.Dialog'に作成しました。私はその後、AlertDialog.Builderコンストラクタ(新しいAlertDialog.Builder(this、R.style.test_dialog))に渡しました。それは良いようだが、何とかダイアログがダイアログ内にラップされている。正方形のボックスがダイアログを囲んでいます。 誰にも分かりますか?

答えて

35

あなたは、のようなスタイルを作成

<style name="cust_dialog" parent="@android:style/Theme.Dialog"> 
    <item name="android:windowTitleStyle">@style/dialog_title_style</item> 
    </style> 

<style name="dialog_title_style" parent="android:Widget.TextView"> 
    <item name="android:background">@android:color/black</item> 
    <item name="android:padding">10dp</item> 
</style> 

そして、あなたは、ダイアログのインスタンスを作成することができますすることができます

Dialog dialog=new Dialog(this,R.style.cust_dialog); 
dialog.setContentView(R.layout.fragment_features_dialog); 
dialog.setTitle(R.string.features); 

今ダイアログが黒のタイトルの背景色で表示されます。

+0

こんにちは、返信ありがとうございます。 Alert.Builderはどうやって別のUIを表示しますか? AlertDialog.Builder testBuilder; testBuilder =新しいAlertDialog.Builder(this、R.style.cust_dialog); \t testBuildersetView(レイアウト); 親テーマTheme.Holo.Light.Dialogを使用しています。 また、Alertdialog.Builderを使用すると、ダイアログはダイアログ内にラップされます。なぜ誰が知っていますか? – CLDev

4

ダイアログラップされたダイアログ内の外観は、ダイアログのウィンドウの背景によって引き起こされます。すべてのダイアログにこれがありますが、デフォルトのAndroidダイアログではウィンドウの背景が透明に設定されています。これを行うには、このアイテムをカスタムダイアログテーマに追加してください:

<style name="CustomDialog" parent="@android:style/Theme.Holo.Dialog"> 
    <item name="android:windowBackground">@android:color/transparent</item> 
</style> 
1

私はMono Android(Xamarin)を使用しています。

Dialog itemDialog = new Dialog(this.Activity); 
TextView alertTitle=(TextView)itemDialog.Window.DecorView.FindViewById(Android.Resource.Id.Title); 

alertTitle.SetTextColor(Android.Graphics.Color.Blue); 
alertTitle.SetBackgroundColor(Android.Graphics.Color.Orange); 
itemDialog.SetContentView(Resource.Layout.listview_custom_dialog); 
string[] options = new string[] { "Open", "Mark as Unread","Mute","View  
Profile","Block Connection","Delete Conversation" }; 
ArrayAdapter<string> adapter = new ArrayAdapter<string>(this.Activity, 
Resource.Layout.listitem_custom_dialog,Resource.Id.textViewDialogDescription, 
options); 

Resource.Layout.listitem_custom_dialog:あなたのフラグメントでダイアログを作成するために、私のアプリで使用しています別の代替を示すのです

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@android:color/transparent" > 
<TextView 
    android:id="@+id/textViewDialogDescription" 
    android:layout_width="match_parent" 
    android:layout_height="44dp" 
    android:background="#ffffff" 
    android:textColor="#386B96" 
    android:paddingLeft="4dp" 
    android:textSize="14dp" /> 
</RelativeLayout> 

ListView lv = itemDialog.FindViewById<ListView> 
(Resource.Id.listViewDialogItems); 
lv.Adapter = adapter; 
adapter.NotifyDataSetChanged(); 
itemDialog.SetCancelable(true); 
itemDialog.SetTitle("Conversation"); 
itemDialog.Show(); 
:これは、ここでは、xmlファイルのカスタムリストビューレイアウトされています

Android.Resource.Id.Title:これは、ダイアログタイトルを含むテキストビューのIDです。アンドロイドによってあらかじめ定義されています。 このようにして、好きなようにスタイルを設定できるダイアログが表示されます。

+0

Android Studioの 'TextView titleView =(TextView)myDialog.findViewById(android.R.id.title);'は、完全に動作します。 – grabarz121

1

あなたのタイトルのためのXMLレイアウトファイルを作成し、それを膨らませると、あなたはちょうどこの

LayoutInflater inflater = this.getLayoutInflater(); 
View titleView = inflater.inflate(R.layout.custom_title, null); 

new AlertDialog.Builder(SubCategoryActivity.this) 
        .setCustomTitle(titleView); 

ようとすることができますcustom_titleレイアウトでカスタムタイトルを設定することができ

View view = getLayoutInflater().inflate(R.layout.cust_dialog_title, null); 
alertDialog.setCustomTitle(view); 
1

としてAlertDialogにに設定このようなカスタムタイトルを作成する

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:paddingLeft="10dp" 
     android:paddingRight="10dp" 
     android:id="@+id/llsubhead" 
     android:background="@color/colorPrimary"> 

     <TextView 
      android:id="@+id/exemptionSubHeading4" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" 
      android:layout_marginBottom="10dp" 
      android:layout_weight="1" 
      android:text="Exemption Sub Head" 
      android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium" 
      android:textColor="@color/white" /> 
    </LinearLayout> 
</LinearLayout> 
関連する問題