zl程序教程

您现在的位置是:首页 >  其它

当前栏目

AndroidDialog设置字体大小的具体方法

设置 字体大小 具体方法
2023-06-13 09:15:05 时间

先看下面图片:

这是我在做登录页面的时候,调用系统的ProgressDialog进行等待,可是看起来很不协调,左边的等待图片过大,右边文字过小,看起来老别扭,虽然功能上不存在什么问题,但是我有强迫症,看不顺的就像弄掉。可是找了好久,没发现ProgressDialog 有一个方法是可以设置字体的。

于是我又来CSDN查找解决方案,可是找了好久,翻了好几页都没看到想要的结果,心冷了,找到的都说ProgressDialog可以自定义一个View,在layout定义一个布局,然后设置到ProgressDialog中,这确实是一个解决办法,可是对我来说颇显麻烦,我只是要一个等待效果,改一下字体,费不着去写一个layout,在重写一个ProgressDialog吧。

最后我想想,可以设置ProgressDialog 的layout那么应该也可以获取他的View吧,果然Dialog就有一个获取View的方法:

复制代码代码如下:


publicabstractViewgetDecorView()
AddedinAPIlevel1
Retrievethetop-levelwindowdecorview(containingthestandardwindowframe/decorationsandtheclient"scontentinsideofthat),whichcanbeaddedasawindowtothewindowmanager.

Notethatcallingthisfunctionforthefirsttime"locksin"variouswindowcharacteristicsasdescribedin

只要有了View我就可以找到其中的TextView,并设置相应的字体大小,一下是我的实现代码:

复制代码代码如下:


   /**
    *显示进度对话框
    *@parammessage消息
    *@paramcancel是否可取消
    *@paramtextsize字体大小
    */
   protectedfinalvoidshowProgressDialog(Stringmessage,booleancancel,inttextsize)
   {
       //TODOAuto-generatedmethodstub
       mProgress=newProgressDialog(this);
       mProgress.setMessage(message);
       mProgress.setCancelable(cancel);
       mProgress.setOnCancelListener(null);
       mProgress.show();

       setDialogFontSize(mProgress,textsize);
   }
   privatevoidsetDialogFontSize(Dialogdialog,intsize)
   {
       Windowwindow=dialog.getWindow();
       Viewview=window.getDecorView();
       setViewFontSize(view,size);
   }
   privatevoidsetViewFontSize(Viewview,intsize)
   {
       if(viewinstanceofViewGroup)
       {
           ViewGroupparent=(ViewGroup)view;
           intcount=parent.getChildCount();
           for(inti=0;i<count;i++)
           {
               setViewFontSize(parent.getChildAt(i),size);
           }
       }
       elseif(viewinstanceofTextView){
           TextViewtextview=(TextView)view;
           textview.setTextSize(size);
       }
   }

最后看效果图: