如何设置preferenceScreen到Android其它布局 [英] How to set PreferenceScreen into other layout in android
问题描述
我想用 preferenceScreen
在我的应用程序,并在 RES / XML / setting_ preference.xml <本次活动创建XML布局/ STRONG>。但这种XML布局很简单,我想在另一个布局使用此布局。结果
例如:我想使用 setting_ preference.xml 到 setting_activity.xml ,setting_activity.xml路径为 RES /布局/ setting_activity.xml 。
如何呢?结果
setting_ preference XML code:
&LT;?XML版本=1.0编码=UTF-8&GT?;
&LT; preferenceScreen的xmlns:机器人=http://schemas.android.com/apk/res/android&GT; &LT; preferenceCategory
机器人:键=setting_title_title_category
机器人:标题=标题选项&GT; &LT;复选框preference
机器人:ID =@ + ID / setting_title_show_id
机器人:键=setting_title_show
机器人:标题=显示主标题
机器人:总结=显示/隐藏标题的MainPage
安卓:检查=真/&GT; &LT; EditText上preference
机器人:键=setting_title_text
机器人:标题=设置主标题
机器人:总结=更改标题的MainPage
机器人:DIALOGTITLE =更改标题
机器人:dialogMessage =更改标题,请.../&GT; &LT; / preferenceCategory&GT; &LT; preferenceCategory
机器人:键=setting_title_font_category
机器人:标题=字体选项&GT; &LT;名单preference
机器人:键=setting_title_font_color
机器人:标题=标题字体颜色
机器人:总结=更改标题的字体颜色
机器人:项=@阵列/颜色
机器人:entryValues =@阵列/颜色
机器人:DIALOGTITLE =更改字体颜色/&GT; &LT; / preferenceCategory&GT; &LT;铃声preference
机器人:标题=TES/&GT;&LT; / preferenceScreen&GT;
setting_activity XML code:
&LT;?XML版本=1.0编码=UTF-8&GT?;
&LT;的RelativeLayout的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:layout_width =match_parent
机器人:layout_height =match_parent
工具:上下文=com.tellfa.nikandroid.mytestdbproject.SettingPage&GT;&LT; / RelativeLayout的&GT;
设置页code:
公共类SettingPage扩展preferenceActivity实现共享preferences.OnShared $ P $ {pferenceChangeListener @覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
。getFragmentManager()调用BeginTransaction()取代(android.R.id.content,新的我的preferenceFragment())提交()。
} @覆盖
公共无效onShared preferenceChanged(共享preferences共享preferences,串键){
如果(key.equals(setting_title_font_color)){
//获得通过的关键preference
preference preF =找到preference(键);
//做你的东西在这里
} 如果(key.equals(setting_title_show)){ preference preF =找到preference(键);
}
} 公共静态类我的preferenceFragment扩展$ P $ {pferenceFragment
@覆盖
公共无效的onCreate(最终捆绑savedInstanceState){
super.onCreate(savedInstanceState);
加preferencesFromResource(R.xml.setting_ prefrences);
}
}
}
添加要加载XML preference文件中的布局XML文件,并执行该活动preferenceFragment一个的FrameLayout。
I want use PreferenceScreen
in my application, and create XML layout for this activity in res/xml/setting_preference.xml. but this XML layout is very simple, i want use this layout in another layout.
For example : i want use setting_preference.xml into setting_activity.xml , setting_activity.xml path is res/layout/setting_activity.xml.
How can i it?
setting_preference XML code:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:key="setting_title_title_category"
android:title="Title options">
<CheckBoxPreference
android:id="@+id/setting_title_show_id"
android:key="setting_title_show"
android:title="Show Main Title"
android:summary="Show/hide MainPage title"
android:checked="true"/>
<EditTextPreference
android:key="setting_title_text"
android:title="Set Main Title"
android:summary="Change MainPage title"
android:dialogTitle="Change Title"
android:dialogMessage="Change title please..."/>
</PreferenceCategory>
<PreferenceCategory
android:key="setting_title_font_category"
android:title="Font options">
<ListPreference
android:key="setting_title_font_color"
android:title="Title font colors"
android:summary="Change title font colors"
android:entries="@array/colors"
android:entryValues="@array/colors"
android:dialogTitle="Change font color" />
</PreferenceCategory>
<RingtonePreference
android:title="tes"/>
</PreferenceScreen>
setting_activity XML code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.tellfa.nikandroid.mytestdbproject.SettingPage">
</RelativeLayout>
Setting Page code:
public class SettingPage extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equals("setting_title_font_color")) {
// get preference by key
Preference pref = findPreference(key);
// do your stuff here
}
if (key.equals("setting_title_show")){
Preference pref = findPreference(key);
}
}
public static class MyPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setting_prefrences);
}
}
}
Add a frameLayout where you want to load your xml preference file in the layout xml file and implement PreferenceFragment in that activity.
这篇关于如何设置preferenceScreen到Android其它布局的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!