我正在创建一个自定义对话框,我想知道如何更改标题栏的背景。
我尝试了两种方法:
1 - 我尝试过AlertDialog.Builder方法'setCustomTitle'。我创建了一个简单的布局视图,包括布局宽度和高度'match_parent'和背景颜色的textview。当我运行应用程序时,只有标题栏的上半部分显示背景颜色。下半部分仍显示默认主题背景颜色。有谁知道为什么?
2 - 我创建了自己的对话框主题。我创建了一个带有父继承的样式'@android:style / Theme.Holo.Light.Dialog'。然后我在AlertDialog.Builder构造函数中传递了它 - 新的AlertDialog.Builder(this,R.style.test_dialog)。看起来不错,但不知何故,对话框包含在对话框中。对话框周围有一个方框。 有谁知道为什么?
答案 0 :(得分:37)
您可以创建类似
的样式<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);
现在,对话框显示黑色标题背景颜色。
答案 1 :(得分:4)
对话框包含在对话框中的外观是由对话框的窗口背景引起的。每个对话框都有此选项,但默认的Android对话框将窗口背景设置为透明。为此,请在自定义对话框主题中添加此项:
<style name="CustomDialog" parent="@android:style/Theme.Holo.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
答案 2 :(得分: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:这是自定义列表视图布局,这里是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 :这是包含对话框标题的textview的ID。它是由android预定义的。 通过这种方式,您将获得一个可以按照自己的方式设置样式的对话框。
答案 3 :(得分:1)
为您的标题创建一个xml布局文件并对其进行充气并将其设置为AlertDialog为
View view = getLayoutInflater().inflate(R.layout.cust_dialog_title, null);
alertDialog.setCustomTitle(view);
答案 4 :(得分:1)
您可以像这样设置自定义标题
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>