【问题标题】:ProgressDialog: change text sizeProgressDialog:更改文本大小
【发布时间】:2023-04-16 21:45:02
【问题描述】:

我从 java 代码创建了一个 ProgressDialog:

mProgressDialog = ProgressDialog.show(this, ..., ... , true);

我想更改消息文本的大小和颜色 我该怎么做?

【问题讨论】:

    标签: android


    【解决方案1】:

    您可以使用可扩展字符串并设置可扩展字符串的颜色和大小。使用 spannable 字符串设置文本颜色和大小。

    注意:确保字体不会太大而无法适应屏幕

    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"
    tools:context=".MainActivity" >
    
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_marginBottom="35dp"
        android:layout_marginLeft="56dp"
        android:text="Button" />
    
    </RelativeLayout>
    

    主活动

        public class MainActivity extends Activity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button b= (Button) findViewById(R.id.button1);
        b.setOnClickListener(new OnClickListener()
        {
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String s= "Hello";
                String title="MyTitle";
                SpannableString ss1=  new SpannableString(title);
                ss1.setSpan(new RelativeSizeSpan(2f), 0, ss1.length(), 0);  
                ss1.setSpan(new ForegroundColorSpan(Color.RED), 0, ss1.length(), 0); 
                SpannableString ss2=  new SpannableString(s);
                ss2.setSpan(new RelativeSizeSpan(2f), 0, ss2.length(), 0);  
                ss2.setSpan(new ForegroundColorSpan(Color.GREEN), 0, ss2.length(), 0); 
                ProgressDialog pd = new ProgressDialog(MainActivity.this);
                pd.setTitle(ss1);
                pd.setMessage(ss2);
                pd.show();
            }
    
        });
    
    
    
    }
       }
    

    您可以使用自定义样式更改文本的颜色

    styles.xml

     <style name="NewDialog" parent="@android:style/Theme.Dialog">
    
    <item name="android:windowFrame">@null</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowTitleStyle">@null</item>
    <item name="android:colorBackground">#ffffff</item>// change background color
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    <item name="android:backgroundDimEnabled">true</item>
    <item name="android:width">600dip</item>
    <item name="android:height">100dip</item>
     <item name="android:textColor">#0FECFF</item>// change color
    </style>
    

    在你的活动中

        ProgressDialog pd = new ProgressDialog(this,R.style.NewDialog);
    

    【讨论】:

      【解决方案2】:

      您也可以使用:ContextThemeWrapper

      例如:

      ProgressDialog.show(new ContextThemeWrapper(this, R.style.DialogCustom), "Loading", "Wait please");
      
      <style name="DialogCustom">
          <item name="android:textSize">18sp</item>
      </style>
      

      【讨论】:

        【解决方案3】:

        这样试试

        private void showProgressDialog() {
        
            progressDialog = new ProgressDialog(this,R.style.CustomDialog);
            progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            progressDialog.setMessage("Logging in. Please wait.");
            progressDialog.show();
        }
        

        使用自定义布局

        【讨论】: