如何将AlertDialog标题置于中心位置?

时间:2017-06-24 09:56:31

标签: java android alertdialog android-dialog

这是我的代码,请在下方休息。

public void Anzeigen_Reaper(View view) {
    AlertDialog.Builder helpBuilder = new AlertDialog.Builder(this);
    helpBuilder.setTitle("Test Title");
    helpBuilder.setMessage("Test Message");
    helpBuilder.setPositiveButton("Ok, got it!",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                }
            });
    AlertDialog helpDialog = helpBuilder.create();
    helpDialog.show();
}

我不知道如何在不添加几个" \ t"的情况下将我的标题(helpBuilder.setTitle("Test Title");)放在中心位置。当然我可以添加20次" \ t"把它放在中心,但可能有一个特殊的指令/缩写。

我无法添加help.Builder.setGravity("GRAVITY.CENTER);,因为setGravity标记为红色。

有谁知道如何解决这个问题?如果没有风格可能,但如果有必要,请告诉我我是怎么做的,因为我不知道" styles.xml"的工作原理。

提前致谢!

3 个答案:

答案 0 :(得分:1)

titlebar.xml

 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_margin="10dp"
    android:textStyle="bold"
    android:text="Title"/>

</RelativeLayout>

alertDialog代码

    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    LayoutInflater inflater = getLayoutInflater();
    View view=inflater.inflate(R.layout.titlebar, null);
    alert.setCustomTitle(view);
    alert.setMessage("Your Message");
    alert.setPositiveButton("Ok, got it!",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                }
            });
    AlertDialog helpDialog = alert.create();
    helpDialog.show();

答案 1 :(得分:0)

// Creating the AlertDialog with a custom xml layout

AlertDialog.Builder helpBuilder = new AlertDialog.Builder(this);
LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.layoutname, null);
helpBuilder.setView(view);

TextView txtTitle = new TextView(this);
// Customise your Title 
txtTitle.setText("Test Title");
txtTitle.setGravity(Gravity.CENTER);

helpBuilder.setCustomTitle(txtTitle );

答案 2 :(得分:0)

您需要创建自定义对话框 - 您将无法为默认的AlertDialog执行此操作。在自定义对话框的布局中,您可以根据需要创建布局 - 将标题文本对齐在中心,依此类推。

您甚至可以使用样式来设置对话框的布局样式。用于设置对话框样式的一些片段:

styles.xml内添加以下代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="CustomDialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowTitleStyle">@style/CustomDialogTitle</item>
    </style>

    <style name="CustomDialogTitle" parent="@android:style/TextAppearance.DialogWindowTitle">
        <item name="android:gravity">center_horizontal</item>
    </style>
    <style name="DialogWindowTitle">
    <item name="android:maxLines">1</item>
    <item name="android:scrollHorizontally">true</item>
    <item name="android:textAppearance">@android:style/TextAppearance.DialogWindowTitle</item>
    </style>
</resources>

然后在创建对话框时将样式引用为:

Dialog dialog = new Dialog(this, R.style.CustomDialog); dialog.setTitle("Your title"); dialog.setContentView(R.layout.custom_dialog);