dp 中的文本大小

kos*_*sas 2 xml android textview android-layout

所以我现在完全迷失了,当用户通过辅助功能设置他的字体大小时,文本大小会影响我的 UI -> 字体大小巨大的问题,所以为了快速修复,我决定将所有文本大小更改为dp而不是sp文本总是大小相同,但在某些地方,即使textsize设置为dp,textview也会调整大小,知道为什么吗?

这是文本大小设置为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"/>
Run Code Online (Sandbox Code Playgroud)

这里是TextView的而忽略TEXTSIZE甚至将其设置为后DP

 <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"/>
Run Code Online (Sandbox Code Playgroud)

Sar*_*dhi 5

我有一个解决方案,可以使您的应用程序中的字体大小不可更改:

 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);
}
Run Code Online (Sandbox Code Playgroud)

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

 adjustFontScale(getResources().getConfiguration());
Run Code Online (Sandbox Code Playgroud)

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