保存文字大小首选项

时间:2017-12-14 19:38:43

标签: android textview sharedpreferences font-size

我为我的' TextViews'创建了一个自定义缩放。这样用户就可以放大和缩小。我想保持缩放的位置,以便下次他们进入应用程序时,他们不需要再次放大。我想知道最好的办法是什么?感谢。

我有两种方法

获取文字大小:

    private void getTextViewSize() {
    boolean gotTextViewsize = false;
    boolean gotDocumentViewsize = false;
    for (int i = 0; i < linearLayout.getChildCount(); i++) {
        if (linearLayout.getChildAt(i) instanceof TextView) {
                (prefs.edit().putFloat("textViewSize",((TextView) linearLayout.getChildAt(i)).getTextSize())).commit();
            gotTextViewsize = true;
        }else if(linearLayout.getChildAt(i) instanceof DocumentView){
            (prefs.edit().putFloat("documentViewSize",((DocumentView) linearLayout.getChildAt(i)).getDocumentLayoutParams().getTextSize())).commit();
            gotDocumentViewsize = true;
        }

        if(gotDocumentViewsize && gotTextViewsize){
            return;
        }
    }
}

这将获得每次缩放后调用的文本视图的大小。

接下来是设置文字大小:

  private void setTextSize() {

    for (int i = 0; i < linearLayout.getChildCount(); i++) {
        if (linearLayout.getChildAt(i) instanceof TextView) {
            if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                ((TextView) linearLayout.getChildAt(i)).setTextSize(prefs.getFloat("textViewSize", 15.0f));
            } else {
                ((TextView) linearLayout.getChildAt(i)).setTextSize(prefs.getFloat("textViewSize", 14.0f));
            }

        }else if (linearLayout.getChildAt(i) instanceof DocumentView){
            ((DocumentView) linearLayout.getChildAt(i)).getDocumentLayoutParams().setTextSize(prefs.getFloat("documentViewSize", 15.0f));
        }
    }
}

这应该是它的大小 然而,它比它更大。那是为什么?

1 个答案:

答案 0 :(得分:3)

使用SharedPreferences。它们会在活动终止期间保留,直到用户清除应用数据为止。

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref");
Editor editor = pref.edit();
editor.putInt("zoomLevel",yourZoomLevel);

检索使用时:

yourZoomLevel=editor.getInt("zoomLevel",0);