我不熟悉使用多个屏幕,因此需要以下方面的帮助:

我有2台设备:


三星S4


显示类别:正常
最小宽度:360dp
分辨率:1080 * 1920
密度等级:XXHDPI
浓度:442dpi

三星平板电脑:


显示类别:大
最小宽度:600dp
分辨率:600 * 1024
密度等级:MDPI
密度:168dpi



我的问题是两个设备的值都从相同的dimens文件中提取。


如果我的文字太小,在手机上看起来还可以,但在平板电脑上太小
如果我的文字较大,则在平板电脑上看起来不错,但在手机上太小


您能告诉我每个值目录的名称吗?

我试过了:

值-sw360dp-xxhdpi
值-sw600dp-mdpi

但是,这并没有改变。

我有一个方法:

public void setTextSize(Context context, TextView view, int textSizeInSp)
{
  float spToPixel= TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, textSizeInSp, context.getResources().getDisplayMetrics());

  view.setTextSize(convertSpToPixels(spToPixel, getApplicationContext()));
}


我有2个dimens文件条目:

值-sw360dp-xxhdpi \尺寸

<dimen name="font_english_large">20sp</dimen>


值-sw600dp-mdpi \尺寸

<dimen name="font_english_large">32sp</dimen>


我以编程方式尝试通过调用以下命令来更改文本大小:

setTextSize(this, textView, (int)getResources().getDimension(R.dimen.font_english_large);


谢谢。

最佳答案

您只需要valuesvalues-large,然后使用sp度量将字体大小添加到相应的文件中。
例如在values/dimens.xml中添加

<dimen name="randrom_text_font_size">18sp</dimen>

并在values-sw600dp/dimens.xml中添加类似

<dimen name="randrom_text_font_size">28sp</dimen>

然后在您的Java代码中:

textView.setTextSize(0,getResources().getDimension(R.dimen.randrom_text_font_size));


或以XML

 android:textSize="@dimen/randrom_text_font_size"

关于android - Android使屏幕变暗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46022710/

10-10 06:30