如何在android studio中自定义Dialog标头?

时间:2016-04-24 13:36:09

标签: android android-studio dialog

我正在使用我在项目中单独的xml文件中创建的自定义对话框,并且我将主窗口着色为蓝色色调, 但主标题仍然是默认的白色。

是否无法更改标题的字体颜色,大小和背景?

我唯一可以在标题中更改文字吗?

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"
    android:paddingLeft="15dp"
    android:paddingRight="15dp"
    android:background="#3edfbc"
    android:orientation="vertical">


    <TextView
        android:id="@+id/textaligmentManager_loader_textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#ffffff"
        android:text="Initlizing Wifi"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <com.github.ybq.android.spinkit.SpinKitView xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/barcodeScanning_spinkit"
        style="@style/SpinKitView.Large.FoldingCube"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_below="@+id/textaligmentManager_loader_textview"
        android:padding="20dp"
        android:layout_centerHorizontal="true"
        app:SpinKit_Color="#ffffff" />


</RelativeLayout>

对话框:

 Dialog dialog = new Dialog(Scanning_Barcode_Activity.this);
        dialog.setContentView(R.layout.aligment_manager_loader_layout);
        dialog.setTitle("Loading");
        dialog.setCancelable(false);

        //set up text
        loaderScreenMainText = (TextView) dialog.findViewById(R.id.textaligmentManager_loader_textview);
        loaderScreenMainText.setText("Loading Wifi");


        //progressBar = (ProgressBar) dialog.findViewById(R.id.barcodeScanning_spinkit);
        //DoubleBounce doubleBounce = new DoubleBounce();
        //progressBar.setIndeterminateDrawable(doubleBounce);


        //now that the dialog is set up, it's time to show it
        dialog.show();

3 个答案:

答案 0 :(得分:0)

设计自定义布局,使布局本身包含标题部分。然后跳过这段代码:

dialog.setTitle("Loading"); 

而是添加以下声明:

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

您也可以使用AlertDialog。在这种情况下,不需要requestWindowFeature()方法。

 android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(Scanning_Barcode_Activity.this);
 LayoutInflater inflater = LayoutInflater.from(Scanning_Barcode_Activity.this);
 View customView = inflater.inflate(your_layout, null);
 builder.setCancelable(false);
 loaderScreenMainText = (TextView) customView.findViewById(R.id.textaligmentManager_loader_textview);
 loaderScreenMainText.setText("Loading Wifi");
 builder.setView(customView);
 AlertDialog dialog = builder.create();
 dialog.show();

答案 1 :(得分:0)

您可以使用AlertDialog,它是Dialog类的子类。在这里,您可以定义包含标题,正文和按钮等所有内容的自定义布局。不会出现额外的标题部分。这是一个演示:

    AlertDialog.Builder builder = new AlertDialog.Builder(Scanning_Barcode_Activity.this);
    builder.setCancelable(false);
    LayoutInflater inflater = LayoutInflater.from(Scanning_Barcode_Activity.this);
    View dialogView = inflater.inflate(R.layout.aligment_manager_loader_layout, null);
    TextView loaderScreenMainText = (TextView) dialogView.findViewById(R.id.textaligmentManager_loader_textview);
    loaderScreenMainText.setText("Loading Wifi");
    builder.setView(dialogView);
    AlertDialog dialog = builder.create();
    dialog.show();

答案 2 :(得分:0)

您可以使用大量时尚的开源库来自定义标题部分。

我在这里分享了我新开发的开源库:PanterDialog

希望它会对你有所帮助。