web-dev-qa-db-ja.com

Android-カスタムダイアログのタイトルの背景を変更する

カスタムダイアログを作成していますが、タイトルバーの背景を変更する方法を知りたいです。

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

1-AlertDialog.Builderメソッド「setCustomTitle」を試しました。レイアウトの幅と高さ 'match_parent'と背景色のテキストビューで構成される単純なレイアウトビューを作成しました。アプリを実行すると、タイトルバーの上半分だけが背景色を表示しています。下半分はまだデフォルトのテーマの背景色を示しています。誰かが理由を知っていますか?

2-独自のダイアログテーマを作成しました。 '@ Android:style /Theme.Holo.Light.Dialog'への親の継承を持つスタイルを作成しました。次に、それをAlertDialog.Builderコンストラクターに渡しました-新しいAlertDialog.Builder(this、R.style.test_dialog)。良さそうですが、どういうわけかダイアログはダイアログ内にラップされています。四角いボックスがダイアログを囲んでいます。誰かが理由を知っていますか?

9
CLDev

次のようなスタイルを作成できます。

<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);

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

37
Santosh

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

<style name="CustomDialog" parent="@Android:style/Theme.Holo.Dialog">
    <item name="Android:windowBackground">@Android:color/transparent</item>
</style> 
4
Groppe

私はMonoAndroid(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:これはカスタムリストビューレイアウトです。xmlファイルは次のとおりです。

<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(); 

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

1
Desire Aheza

タイトルのxmlレイアウトファイルを作成して膨らませ、次のようにAlertDialogに設定します。

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

このようにカスタムタイトルを設定するだけです

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

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

custom_titleレイアウトでは、次のようなカスタムタイトルを作成できます

<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>
1
ice spirit