【问题标题】:Change title size of alertdialog in android?在android中更改alertdialog的标题大小?
【发布时间】:2012-11-12 12:58:28
【问题描述】:

关于邮件中的文字没有问题。我无法更改(个性化)警报对话框标题的颜色、字体、样式?

什么方法?

谢谢!

【问题讨论】:

    标签: android android-alertdialog


    【解决方案1】:

    关于字体大小你可以用这个:

    SpannableStringBuilder ssBuilser = new SpannableStringBuilder("Sample");
    StyleSpan span = new StyleSpan(Typeface.ITALIC);
    ScaleXSpan span1 = new ScaleXSpan(1);
    ssBuilser.setSpan(span, 0, 5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
    ssBuilser.setSpan(span1, 0, 5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
    
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
       builder.setTitle(ssBuilser);
       builder.show();
    

    或

    AlertDialog dialog = new AlertDialog.Builder(this).setMessage("Hello world").show();
    TextView textView = (TextView) dialog.findViewById(android.R.id.message);
    textView.setTextSize(40);
    

    【讨论】:

      【解决方案2】:

      查看此链接:Creating dialogs

      这应该会有所帮助。

      或者这个Alert Dialog Builder

      【讨论】:

        【解决方案3】:

        这是一个完整的例子,我会怎么做。见最后一行代码。

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(cntx);
        alertDialogBuilder
        .setMessage(Html.fromHtml(cntx.getString(R.string.UltimateDemoText)))
        .setCancelable(false)
        .setPositiveButton(cntx.getString(R.string.Ok), new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,int id) { 
            dialog.cancel(); 
            }
         });
        AlertDialog alertDialog = alertDialogBuilder.create();    
        alertDialog.show();
        
        ((TextView)alertDialog.findViewById(android.R.id.title)).setTextSize(TypedValue.COMPLEX_UNIT_SP, 9);
        

        【讨论】:

        • 嗨。获取空指针异常java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setTextSize(int, float)' on a null object reference
        • @vishal 我没有针对所有 api 级别测试此代码。如果您找到了解决方案,请告诉我,以便我将其添加到我的答案中。
        【解决方案4】:

        还有另一种方法可以为对话框标题设置新的自定义视图。我们可以定义每个自定义视图,例如TextView,并为其添加一些自定义属性并将其设置为对话框标题:

         AlertDialog.Builder builder = new AlertDialog.Builder(OrderItemsActivity.this);
        
        TextView title_of_dialog = new TextView(getApplicationContext());
        title_of_dialog.setHeight(50);
        title_of_dialog.setBackgroundColor(Color.RED);
        title_of_dialog.setText("Custom title");
        title_of_dialog.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
        title_of_dialog.setTextColor(Color.WHITE);
        title_of_dialog.setGravity(Gravity.CENTER);
        
        builder.setCustomTitle(title_of_dialog);
        builder.create().show();
        

        在这里,我定义了一个动态的TextView 并为其设置了一些属性。最后,我使用setCustomTitle() 将其设置为对话框标题。

        【讨论】:

          【解决方案5】:

          让我们以这个自定义对话框为例。以下是用于制作它的文件:

          res/layout/dialog.xml:

          <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content">  <EditText
              android:id="@+id/et_pc_forDialog"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_alignParentLeft="true"
              android:layout_below="@+id/tv_pc_dialogTitle"
              android:layout_marginLeft="5dp"
              android:layout_marginRight="5dp"
              android:layout_marginTop="20dp"
              android:ems="10"
              android:paddingLeft="10dp"
              android:paddingRight="10dp"
              android:hint="Enter Something to search .."
              android:singleLine="true"
              android:textColor="#FFFFFF"  >
              <requestFocus />
          </EditText>
          <TextView
              android:id="@+id/tv_pc_dialogTitle"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignParentLeft="true"
              android:layout_alignParentTop="true"
              android:layout_centerHorizontal="true"
              android:layout_marginLeft="5dp"
              android:text="SEARCH"
              android:textColor="#FFFFFF"
              android:textAppearance="?android:attr/textAppearanceLarge" />
          <Button
              android:id="@+id/bt_pc_goButton"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_below="@+id/et_pc_forDialog"
              android:layout_centerHorizontal="true"
              android:layout_marginTop="14dp"
              android:text="GO"
              android:textColor="#FFFFFF"
              android:textSize="25sp" /> </RelativeLayout>
          

          res/layout/activity_main.xml

          <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:paddingBottom="@dimen/activity_vertical_margin"
          android:paddingLeft="@dimen/activity_horizontal_margin"
          android:paddingRight="@dimen/activity_horizontal_margin"
          android:paddingTop="@dimen/activity_vertical_margin"
          tools:context=".MainActivity" >
          
          <Button
              android:id="@+id/button1"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignParentTop="true"
              android:layout_centerHorizontal="true"
              android:layout_marginTop="177dp"
              android:text="Open Dialog" />
          </RelativeLayout>
          

          MainActivity.java:

          package com.bhavit.stackoverflow;
          import android.os.Bundle;
          import android.app.Activity;
          import android.app.Dialog;
          import android.app.Dialog;
          import android.graphics.Typeface;
          import android.view.Menu;
          import android.view.View;
          import android.view.Window;
          import android.widget.Button;
          import android.widget.TextView;
          import android.app.Dialog;
          import android.graphics.Typeface;
          import android.view.Menu;
          import android.view.View;
          import android.view.Window;
          import android.widget.Button;
          import android.widget.TextView;
          public class MainActivity extends Activity {
          
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
          
              Button openDialog = (Button) findViewById(R.id.button1);
              openDialog.setOnClickListener(new View.OnClickListener() {
          
                  @Override
                  public void onClick(View v) {
          
          
                      Dialog dialog = new Dialog(MainActivity.this); // here write the name of your activity in place of "YourActivity"
                      dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                      dialog.setContentView(R.layout.dialog);
                      TextView tv = (TextView)dialog.findViewById(R.id.tv_pc_dialogTitle);
                      Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/GOTHIC.TTF"); // here GOTHIC.TTF is the font-file I have pasted in the asset/fonts folder in my project 
                      tv.setTypeface(tf); // Set the typeface like this
          
                      Button bt = (Button) dialog.findViewById(R.id.bt_pc_goButton);
                      bt.setOnClickListener(new View.OnClickListener() {
          
                          @Override
                          public void onClick(View v) {
          
                              // Write here, what do you want to do on button click
          
                          }
                      });
          
                      dialog.show();
          
          
                  }
              });
          
          
          
              }
           }
          

          您可以通过这种方式制作自定义对话框,并自定义该对话框的组件。在这里,我为对话框的标题设置了自定义字体。

          【讨论】:

            猜你喜欢
            • 2016-11-08
            • 2011-11-20
            • 1970-01-01
            • 2014-10-13
            • 1970-01-01
            • 2011-09-27
            • 2015-10-05
            • 1970-01-01
            • 2015-03-30
            相关资源
            最近更新 更多