保存文本大小首选项

Posted

技术标签:

【中文标题】保存文本大小首选项【英文标题】:Save Text Size Preferences 【发布时间】:2018-05-28 23:42:17 【问题描述】:

我为我的“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】:

使用共享首选项。它们会在活动终止期间保留,直到用户清除应用数据。

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

检索使用时:

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

【讨论】:

我做到了,请检查更新后的代码,但它仍然不起作用。

以上是关于保存文本大小首选项的主要内容,如果未能解决你的问题,请参考以下文章

如何以共享首选项保存图像?

在共享首选项中获取文件大小

Qt:不通过信号和槽机制恢复首选项

共享首选项保存和检索数据

Dashboard Widget 首选项实际保存在哪里?

保存的首选项在重新启动时不起作用