日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android PreferenceScreen的使用和详解(设置页面)

發布時間:2023/12/14 Android 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android PreferenceScreen的使用和详解(设置页面) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PreferenceScreen是設置選項的配置文件,一般用在設置頁面,用來當前的狀態是保存在。該狀態無須用戶處理,存在SharedPreferences中。

1.如何使用

1.1布局文件的創建

PreferenceScreen的用法和layout的類似,都是通過xml文件來管理的,但是PreferenceScreen的布局需要自己去創建

在/main/res/xml夾下新建preferences.xml文件,文件的根布局PreferenceScreen節點。

配置如下

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"><SwitchPreferenceCompatapp:key="notifications"app:title="Enable message notifications" /><Preferenceapp:key="feedback"app:summary="Report technical issues or suggest new features"app:title="Send feedback" /><SwitchPreferenceapp:key="SwitchPreference"app:title="SwitchPreference" /><CheckBoxPreferenceandroid:key="CheckBoxPreference"app:title="CheckBoxPreference" /><ListPreferenceapp:key="ListPreference"android:entries="@array/mode_80211_selection_entries"android:entryValues="@array/mode_80211_selection_values"app:title="ListPreference" /></PreferenceScreen>

布局的預覽

PreferenceScreen支持以下幾種:

1.ListPreference: 2.DropDownPreference 3.CheckBoxPreference 4.SwitchPreference 5.SwitchPreferenceCompat 6.EditTextPreference 7.MultiSelectListPreference 8.Preference 9.PreferenceCategory 10.PreferenceScreen 11.SeekBarPreference

2.使用:

我們知道了PreferenceScreen大概,接下來介紹如何使用

2.1Preference的屬性

<Preferenceapp:key="feedback"app:summary="Report technical issues or suggest new features"app:title="Send feedback" />

?由于前面說過,Preference狀態存儲在SharedPreferences中,所以,每個Preference都必須有一個key,這樣方便狀態存儲,如果當前key沒有設置,在后期的熟悉操作,可能會存在報錯,如果報錯key is null,設置一個key即可。

key:指定一個key

? ? java.lang.IllegalArgumentException: Key cannot be null

title:標題

summary:標題下方的內容

layout:可以嵌入一個layout,覆蓋當前view的信息,title或者其他都不會顯示,只顯示layout

icon:左側的圖標

2.ListPreference

<ListPreferenceandroid:entries="@array/arry_entries"android:entryValues="@array/arry_values"app:key="ListPreference"app:summary="summary"app:title="ListPreference" />

entries:顯示的item
entryValues:內部值

這兩個是數組,核心是key和value對應關系,數據長度一致,否則會出問題

Preference preference = getPreferenceScreen().getPreference(0); if (preference instanceof ListPreference) {ListPreference listPreference = (ListPreference) preference;String val = listPreference.getValue();listPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {@Overridepublic boolean onPreferenceChange(Preference preference, Object newValue) {if (preference instanceof ListPreference) {//把preference這個preference強制轉化為listpreference類型ListPreference listpreference = (ListPreference) preference;//獲取listpreference中的實體內容CharSequence[] entries = listpreference.getEntries();CharSequence[] entVal = listpreference.getEntryValues();//獲取listpreference中的實體內容的下標值int index = listpreference.findIndexOfValue((String) newValue);//把listpreference中的摘要顯示為當前listpreference的實體內容中選擇的那個項目listpreference.setSummary(entries[index] + "=" + entVal[index]);}return true;}});

點擊獲取對應的值

3.DropDownPreference:

下拉選擇,和list的相似,但是list是彈窗。下拉的話會比較丑

?DropDownPreference的配置和ListPreference一樣,只是,ListPreference是dialog的彈窗展示,DropDownPreference的是一個recycleview的adapter,都是繼承DialogPreference。

?這個顯示可以自己定義。

內部Adapter數據添加:

3.CheckBoxPreference

CheckBox是勾選,多了一個開和關的狀態

<CheckBoxPreferenceapp:key="CheckBoxPreference"app:title="CheckBoxPreference"app:summary="CheckBoxPreference"app:summaryOff="summaryOff"app:summaryOn="summaryOn"/>

?app:summaryOn的優先級大于app:summary,如果設置了on和off的summary,原來的summary將被覆蓋了

4.SwitchPreference

開關,和原來Switch的控件一樣使用,

<SwitchPreferenceapp:title="SwitchPreference"app:summary="summary"app:summaryOff="summaryOff"app:summaryOn="summaryOn"/>

用法和CheckBox一樣。

5.EditTextPreference

?是edittext的狀態,

?

<EditTextPreferenceapp:key="edit"app:summary="summary"app:title="EditTextPreference"/>

如果未指定key,將會報錯

點擊edittextPreference,將會彈窗一個輸入框,dialog的彈窗就是我們的edittext內容。

6.MultiSelectListPreference

?多選。用法和list以及DropDownPreference一樣。

需要配置數據來源

<MultiSelectListPreferenceapp:key="multiselect"app:title="MultiSelectListPreference"app:summary="summary"android:entries="@array/arry_entries"android:entryValues="@array/arry_values"/>

7.PreferenceCategory

分類。目前和Preference用法差不多。也是不可用。

@Override public boolean isEnabled() {return false; }

8.PreferenceScreen

是一個根節點。

?9.SeekBarPreference

seekbar是原來Android的滑動控件。Preference拼接以后,變成一個可以存儲的。

<SeekBarPreferenceapp:key="seek"app:summary="SeekBarPreference"app:title="SeekBarPreference"android:max="100"/>

為什么會存在SharePreference?為什么這些控件都是已Preference結尾?現在大家應該明白了吧。

同理,如果緩存被清了,這些狀態也會被清掉。

二.引用

1.繼承:PreferenceFragmentCompat

public class MySettingsFragment extends PreferenceFragmentCompat

我們需要繼承PreferenceFragmentCompat模塊,重寫

public void onCreatePreferences(Bundle savedInstanceState, String rootKey) 的方法。

加載xml文件:

setPreferencesFromResource(R.xml.preferences, rootKey);

獲取節點信息:

getPreferenceManager():獲取到一個Manager對象,或者直接獲取getPreferenceScreen().

如果想獲取SharedPreferences信息,可以通過PreferenceManager;

getPreferenceManager().getSharedPreferences(); getPreferenceManager().getSharedPreferencesName(); getPreferenceManager().getSharedPreferencesMode() PreferenceScreen:

獲取childCount=getPreferenceCount()

獲取指定preference= getPreferenceScreen().getPreference(int position);

然后可以對Preference進行二次編輯

?

總結

以上是生活随笔為你收集整理的Android PreferenceScreen的使用和详解(设置页面)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。