dp中的文字大小

时间:2017-11-13 10:15:45

标签: android xml android-layout textview

所以我完全迷失了,当用户通过辅助功能 - >设置字体大小时,我的文字大小会出现问题。字体大小巨大所以为了快速修复,我决定将所有文字大小更改为 dp ,而不是 sp ,文本将永远是同样大小但在某些地方 textviews 即使 textsize 设置为 dp 也会调整任何想法?

此处是文本大小设置为 dp 的按钮,即使在通过辅助功能更改后也能保持字体大小

    <Button
        android:id="@+id/video_button"
        android:textSize="16dp"
        android:layout_marginTop="10dp"
        android:layout_height="30dp"
        android:layout_width="180dp"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/webshop_button"
        android:text="@string/button_3dvideo_text"/>

这是 textView ,即使将其设置为 dp 后也会忽略 textSize

 <TextView
        android:id="@+id/about"
        android:gravity="center"
        android:textSize="16dp"
        android:layout_above="@+id/footer"
        android:layout_marginBottom="20dp"
        android:layout_centerHorizontal="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/color_white"
        android:text="@string/about"/>

2 个答案:

答案 0 :(得分:4)

我有一个解决方案,这将使您的应用中的字体大小无法更改:

 public void adjustFontScale(Configuration configuration) {
    configuration.fontScale = (float) 1;
    DisplayMetrics metrics = getResources().getDisplayMetrics();
    WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
    wm.getDefaultDisplay().getMetrics(metrics);
    metrics.scaledDensity = configuration.fontScale * metrics.density;
    getBaseContext().getResources().updateConfiguration(configuration, metrics);
}

在每个活动的onCreate中调用此方法,或者您可以进行基本活动:

 adjustFontScale(getResources().getConfiguration());

您可以根据需要更改fontScale。 希望这会有所帮助。

答案 1 :(得分:1)

可能会尝试使用它不确定它是否会帮助你。

DisplayMetrics metrics = getApplicationContext().getResources().getDisplayMetrics();
    float dp = 20f;
    float fpixels = metrics.density * dp;
    int pixels = (int) (fpixels + 0.5f);
    Edit_click.setTextSize(pixels);