【问题标题】:Resize the text between screen sizes在屏幕大小之间调整文本大小
【发布时间】:2015-08-11 04:13:48
【问题描述】:

我正在尝试支持所有不同的屏幕尺寸,但现在我想调整文本大小。

但我用 2 种不同的方式更改文本的大小:

  • 在布局 XML 中:

            android:textSize="15dp"
    
  • 在java文件中:

    TextView tv2 = (TextView)v.findViewById(android.R.id.text2);
    tv2.setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/GothamBook.ttf"));
    tv2.setTextSize(14);
    

那么我怎样才能支持不同屏幕尺寸之间的文本大小呢?

【问题讨论】:

  • 为什么不针对不同的屏幕尺寸为您的 xml 使用不同的文件夹?

标签: android android-studio resolution screen-size text-size


【解决方案1】:

在 dp 中设置文本大小是个坏主意。始终在 sp 中指定文本六字。

在 XML 中

android:textSize="15sp"

在 Java 中

textview.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);

【讨论】:

  • 所以它会调整文本大小?
  • 在 sp 中指定 textsize 将在所有屏幕尺寸/密度下显示正确的尺寸。这是 android 文档在第 2 段中所说的 developer.android.com/training/multiscreen/screendensities.html
  • 它也谈论密度,但我试试看 :) 我也可以在 xml 中做 sp 吗?
  • 是的 sp 也可以在 xml 中使用。仅对 textsize 使用“sp”,对其他所有内容使用“dp”
【解决方案2】:

您可以找出显示的大小,并根据它使用以下方法更改文本大小:

int screenSize = getResources().getConfiguration().screenLayout &
    Configuration.SCREENLAYOUT_SIZE_MASK;

int textSize;
switch(screenSize) {
     case Configuration.SCREENLAYOUT_SIZE_LARGE:
         textSize = 24;
         break;
     case Configuration.SCREENLAYOUT_SIZE_NORMAL:
         textSize = 18;
         break;
     case Configuration.SCREENLAYOUT_SIZE_SMALL:
         textSize = 14;
         break;
     default:
         textSize = 15;
}

然后:

 TextView tv2 = (TextView)v.findViewById(android.R.id.text2);
 tv2.setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/GothamBook.ttf"));
 tv2.setTextSize(textSize);

我设置的值只是举例

【讨论】:

  • 但是我必须把你的函数放在所有的类中,我想我要创建一个特定的类来做到这一点。我试试看
  • 好吧,如果你成功了就说吧:)
  • 可以自动做一些事情吗?以值或尺寸 xml 文件为例?
猜你喜欢
  • 2016-04-20
  • 1970-01-01
  • 2017-01-19
  • 2014-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多