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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

android preference-headers 属性,Android开发之PreferenceActivity的使用

發(fā)布時(shí)間:2023/12/9 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android preference-headers 属性,Android开发之PreferenceActivity的使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

PreferenceActivity

在開發(fā)應(yīng)用程序時(shí),有時(shí)我們會(huì)有選項(xiàng)設(shè)置界面,通常我們可以使用SharePreference以鍵值對(duì)的形式進(jìn)行保存。Android為我們提供了PreferenceActivity。PreferencesActivity是Android中專門用來實(shí)現(xiàn)程序設(shè)置界面及參數(shù)存儲(chǔ)的一個(gè)Activity。

我們只要把Activity繼承PreferenceActivity, PreferenceActivity會(huì)幫我們處理選項(xiàng)的讀寫。從Android3.0開始,官方不推薦單獨(dú)使用PreferenceActivity,而是建議PreferenceActivity與PreferenceFragment結(jié)合使用。

PreferenceActivity結(jié)合PreferenceFragment實(shí)現(xiàn)選項(xiàng)設(shè)置

官方建議PreferenceActivity與PreferenceFragment結(jié)合使用,其中PreferenceActivity負(fù)責(zé)加載選項(xiàng)配置列表的布局文件,PreferenceFragment負(fù)責(zé)加載選項(xiàng)配置的布局文件。

在res下創(chuàng)建xml目錄來創(chuàng)建布局

例如:

PreferenceActivity加載的布局如下,不是layout,而是preference-headers。

res/xml/pref_headers.xml

android:fragment="com.rair.preferenceactivitydemo.PreferenceActivityWithPreferenceFragment$GeneralPreferenceFragment"

android:icon="@drawable/ic_info_black_24dp"

android:title="@string/pref_header_general" />

我們可以通過android:fragment來指定啟動(dòng)PreferenceFragment,當(dāng)然了,也可以通過Intent來啟動(dòng)指定Activity。

android:icon="@drawable/ic_info_black_24dp"

android:title="@string/pref_header_general">

android:action="android.intent.action.VIEW"

android:data="https://www.baidu.com" />

Activity:

public class PreferenceActivityWithPreferenceFragment extends AppCompatPreferenceActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

}

@Override

@TargetApi(Build.VERSION_CODES.HONEYCOMB)

public void onBuildHeaders(List target) {

//加載選項(xiàng)列表布局

loadHeadersFromResource(R.xml.pref_headers, target);

}

/**

* 驗(yàn)證Preference是否有效

*

* @param fragmentName

* @return

*/

protected boolean isValidFragment(String fragmentName) {

return true;

}

/**

* GeneralPreferenceFragment

*/

@TargetApi(Build.VERSION_CODES.HONEYCOMB)

public static class GeneralPreferenceFragment extends PreferenceFragment {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

addPreferencesFromResource(R.xml.pref_general);

}

}

}

PreferenceActivity負(fù)責(zé)加載選項(xiàng)配置列表的布局文件

preference-headers根標(biāo)簽相當(dāng)于一個(gè)列表,header標(biāo)簽相當(dāng)于每個(gè)Item。

如下:

PreferenceFragment負(fù)責(zé)加載選項(xiàng)配置的布局文件

res/xml/pref_general.xml

android:capitalize="words"

android:defaultValue="@string/pref_default_display_name"

android:inputType="textCapWords"

android:key="example_text"

android:maxLines="1"

android:selectAllOnFocus="true"

android:singleLine="true"

android:title="@string/pref_title_display_name" />

android:summary="么么噠"

android:title="Rair" />

如下:

完成效果如下:

我們來看看提供了哪幾種布局元素可供使用

1.CheckBoxPreference:CheckBox選擇項(xiàng),對(duì)應(yīng)的值的ture或flase。如圖:

2.EditTextPreference:輸入編輯框,值為String類型,會(huì)彈出對(duì)話框供輸入。

3.ListPreference: 列表選擇,彈出對(duì)話框供選擇。

4.Preference:只進(jìn)行文本顯示,需要與其他進(jìn)行組合使用。

5.PreferenceCategory:用于分組。效果如下:

6.PreferenceScreen:PreferenceActivity的根元素。

7.RingtonePreference:系統(tǒng)鈴聲選擇。

8.MultiSelectListPreference:列表選擇(多選)

9.SwitchPreference:Switch

接著上面,PreferenceFragment布局修改如下:

res/xml/pref_general.xml布局

android:checked="true"

android:title="不再提醒" />

android:capitalize="words"

android:defaultValue="@string/pref_default_display_name"

android:inputType="textCapWords"

android:key="example_text"

android:maxLines="1"

android:selectAllOnFocus="true"

android:singleLine="true"

android:title="@string/pref_title_display_name" />

android:dialogTitle="城市"

android:entries="@array/city"

android:entryValues="@array/country"

android:title="列表" />

android:summary="么么噠"

android:title="Rair" />

android:entries="@array/city"

android:entryValues="@array/country"

北京

上海

廣州

深圳

A

B

C

D

效果如圖:

PreferenceCategory屬性:

key:唯一標(biāo)識(shí)(至少在同一程序中是唯一),SharedPreferences也將通過此Key值進(jìn)行數(shù)據(jù)保存,也可以通過key值獲取保存的信息。

title:顯示標(biāo)題(大字體顯示)

summary:副標(biāo)題(小字體顯示)

defaultValue:默認(rèn)值

dependency:附屬,即標(biāo)識(shí)此元素附屬于某一個(gè)元素(通常為CheckBoxPreference),dependency值為所附屬元素的key。當(dāng)CheckPreference值為true時(shí),Preference則為可用,否則為不可用。

dialogTitle:彈出對(duì)話框的標(biāo)題

entries:列表中顯示的值。為一個(gè)數(shù)組,通常通過資源文件進(jìn)行設(shè)置。

entryValues:列表中實(shí)際保存的值,與entries對(duì)應(yīng)。(上面的city和county)

寫個(gè)例子

例子直接用的Activity結(jié)合PreferenceFragment實(shí)現(xiàn)

我們用PreferenceScreen來實(shí)現(xiàn)下圖布局

res/xml/pref_my.xml布局

android:key="one"

android:summary="配置全局應(yīng)用設(shè)置"

android:title="應(yīng)用" />

android:key="two"

android:summary="配置編輯器"

android:title="編輯器" />

android:key="three"

android:summary="配置全局應(yīng)用設(shè)置"

android:title="應(yīng)用" />

android:key="four"

android:summary="配置代碼風(fēng)格"

android:title="代碼風(fēng)格" />

android:key="five"

android:summary="配置構(gòu)建運(yùn)行設(shè)置"

android:title="構(gòu)建運(yùn)行" />

android:key="six"

android:summary="配置Dropbox同步設(shè)置"

android:title="Dropbox" />

android:key="seven"

android:summary="配置Git版本控制"

android:title="Git版本控制" />

android:key="eight"

android:summary="顯示法律相關(guān)信息"

android:title="法律" />

MyFragment:

public class MyFragment extends PreferenceFragment {

@Override

public void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

getPreferenceManager().setSharedPreferencesMode(MODE_WORLD_READABLE);

addPreferencesFromResource(R.xml.pref_my);

}

@Override

public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {

super.onViewCreated(view, savedInstanceState);

Preference one = findPreference("one");

one.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

@Override

public boolean onPreferenceClick(Preference preference) {

Toast.makeText(getActivity(), "one", Toast.LENGTH_SHORT).show();

return true;

}

});

findPreference("two").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

@Override

public boolean onPreferenceClick(Preference preference) {

Toast.makeText(getActivity(), "two", Toast.LENGTH_SHORT).show();

return true;

}

});

findPreference("three").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

@Override

public boolean onPreferenceClick(Preference preference) {

Toast.makeText(getActivity(), "再點(diǎn)一下試試", Toast.LENGTH_SHORT).show();

return true;

}

});

findPreference("four").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

@Override

public boolean onPreferenceClick(Preference preference) {

Toast.makeText(getActivity(), "試試就試試", Toast.LENGTH_SHORT).show();

return true;

}

});

}

}

Activity:

public class ActivityWithPreferenceFragment extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_with_preference_fragment);

FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();

fragmentTransaction.replace(R.id.fl, new MyFragment()).commit();

}

}

開篇有說到Preference以鍵值對(duì)的形式進(jìn)行保存,所以我給每一項(xiàng)設(shè)置了一個(gè)key。這個(gè)的作用和我們常用的id差不多,一會(huì)如果我們要引用這個(gè)組件可以通過key來找到他。

我們來加幾個(gè)點(diǎn)擊事件

OnPreferenceClickListener 用來監(jiān)聽某個(gè)選項(xiàng)是否被點(diǎn)擊

public class MyFragment extends PreferenceFragment {

@Override

public void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

getPreferenceManager().setSharedPreferencesMode(MODE_WORLD_READABLE);

addPreferencesFromResource(R.xml.pref_my);

}

@Override

public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {

super.onViewCreated(view, savedInstanceState);

Preference one = findPreference("one");

one.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

@Override

public boolean onPreferenceClick(Preference preference) {

Toast.makeText(getActivity(), "one", Toast.LENGTH_SHORT).show();

return true;

}

});

findPreference("two").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

@Override

public boolean onPreferenceClick(Preference preference) {

Toast.makeText(getActivity(), "two", Toast.LENGTH_SHORT).show();

return true;

}

});

findPreference("three").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

@Override

public boolean onPreferenceClick(Preference preference) {

Toast.makeText(getActivity(), "再點(diǎn)一下試試", Toast.LENGTH_SHORT).show();

return true;

}

});

findPreference("four").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

@Override

public boolean onPreferenceClick(Preference preference) {

Toast.makeText(getActivity(), "試試就試試", Toast.LENGTH_SHORT).show();

return true;

}

});

}

}

通過key找到對(duì)應(yīng)組件

findPreference("two").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

@Override

public boolean onPreferenceClick(Preference preference) {

Toast.makeText(getActivity(), "two", Toast.LENGTH_SHORT).show();

return true;

}

});

運(yùn)行一下:

總結(jié)

以上是生活随笔為你收集整理的android preference-headers 属性,Android开发之PreferenceActivity的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。