保存文本大小首选项
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);
【讨论】:
我做到了,请检查更新后的代码,但它仍然不起作用。以上是关于保存文本大小首选项的主要内容,如果未能解决你的问题,请参考以下文章