常用Preference
CheckPreference —— CheckBox 单选框
EditTextPreference —— EditText 输入文本框
ListPreference —— ListView 列表框
RingtonePreference —— 选择铃声
XML定义常用的属性有:
android:key : 每个Preference控件独一无二的”ID”,唯一表示此Preference。
android:defaultValue : 默认值。 例如,CheckPreference的默认值可为”true”,默认为选中状态;
EditTextPreference的默认值可为”110” 。
android:enabled : 表示该Preference是否可用状态。
android:title : 每个Preference在PreferenceScreen布局上显示的标题——大标题
android:summary : 每个Preference在PreferenceScreen布局上显示的标题——小标题(可以没有)
ListPreference中:
android:entries:类型为array,控件欲显示的文本
android:entryValues:类型为array,与文本相对应的key-value键值对,value保存至sharedPreference文件
说完了,就开始介绍如何使用吧,
1、在项目的res/xml中新建一个preferences.xml。用于定义菜单界面的设置选项
<?xml version="1.0" encoding="utf-8"?>
<PreferenceCategory android:title="inline_preferences" >
<CheckBoxPreference
android:key="checkbox_preference"
android:summary="这是一个复选框"
android:title="复选框" />
</PreferenceCategory>
<PreferenceCategory android:title="dialog-based preferences" >
<EditTextPreference
android:dialogTitle="编辑文本对话框"
android:key="edittext_preference"
android:summary="这是一个编辑文本对话框"
android:title="可编辑文本框" />
<ListPreference
android:dialogTitle="请选择一项"
android:entries="@array/entries_list_preference"
android:entryValues="@array/entryvalues_list_preference"
android:key="list_preferenc"
android:summary="这是一个列表对话框"
android:title="列表对话框" />
</PreferenceCategory>
<PreferenceCategory android:title="Launch preferences" >
<!-- This PreferenceScreen tag serves as a screen break (similar to page break in word processing). Like for other preference types, we assign a key here so it is able to save and restore its instance state. -->
<PreferenceScreen
android:key="screen_preference"
android:summary="展示另一个首选项配置页面"
android:title="页面首选项" >
<!-- 你可以在这里放置更多的首选项内容,将被在下一个页面呈现出来 -->
<CheckBoxPreference
android:key="next_screen_checkbox_preference"
android:summary="在另一个页面展示但出于同一个层级的首选项配置"
android:title="复选框设置" />
</PreferenceScreen>
<PreferenceScreen
android:summary="从一个意图中启动一个activity"
android:title="意图首选项" >
<intent
android:action="android.intent.action.VIEW"
</PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory android:title="Preference attributes" >
<CheckBoxPreference
android:key="parent_checkbox_preference"
android:summary="这是一个可见的父类"
android:title="父类复选框首选项" />
<!-- 子类的可见类型是由样式属性定义的 -->
<CheckBoxPreference
android:dependency="parent_checkbox_preference"
android:key="child_checkbox_preference"
android:layout="?android:attr/preferenceLayoutChild"
android:summary="这是一个可见的子类"
android:title="子类复选框首选项" />
</PreferenceCategory>
</PreferenceScreen>
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_settings) {
FragmentManager fm = getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
MyPerferenceFragment fragment = new MyPerferenceFragment();
transaction.replace(R.id.lin, fragment);
transaction.commit();
}
return super.onOptionsItemSelected(item);
}
}