Android запрещает изменять вид и размер текста в приложении в зависимости от системного вида и размера текста.

Оригинальный адрес: https://blog.csdn.net/sunshine199221/article/details/72765931

 

Я прочитал этот блог, но я не видел адрес загрузки пакета jar, и я чувствовал, что добавление jar также увеличит размер приложения, Я только что увидел, что кто-то в области комментариев дал лучший метод, поэтому Я записал это.

 

написать класс инструментов

public final class DispUtility {

    /**
     * 禁用7.0(23)以上显示大小改变和文字大小
     */
    public static Resources disabledDisplayDpiChange(Resources res) {
        Configuration newConfig = res.getConfiguration();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            //字体非默认值
            if (res.getConfiguration().fontScale != 1) {
                newConfig.fontScale = 1;
            }
            newConfig.densityDpi = getDefaultDisplayDensity();
            res.updateConfiguration(newConfig, res.getDisplayMetrics());
        } else {
            //字体非默认值
            if (res.getConfiguration().fontScale != 1) {
                newConfig.fontScale = 1;//设置默认
                res.updateConfiguration(newConfig, res.getDisplayMetrics());
            }
        }
        return res;
    }

    /**
     * 获取手机出厂时默认的densityDpi
     */
    public static int getDefaultDisplayDensity() {
        try {
            Class aClass = Class.forName("android.view.WindowManagerGlobal");
            Method method = aClass.getMethod("getWindowManagerService");
            method.setAccessible(true);
            Object iwm = method.invoke(aClass);
            Method getInitialDisplayDensity = iwm.getClass().getMethod("getInitialDisplayDensity", int.class);
            getInitialDisplayDensity.setAccessible(true);
            Object densityDpi = getInitialDisplayDensity.invoke(iwm, Display.DEFAULT_DISPLAY);
            return (int) densityDpi;
        } catch (Exception e) {
            e.printStackTrace();
            return -1;
        }
    }
}

Просто укажите это в BaseActivity

public class BaseActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        DispUtility.disabledDisplayDpiChange(this.getResources());
    }
}

 

Je suppose que tu aimes

Origine blog.csdn.net/duyiqun/article/details/96976197
conseillé
Classement