android中包含Preference ListPreference EditTextPreference等控件布局的写法,已经操作各个控件的事件介绍,如下
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" ><PreferenceCategoryandroid:layout="@layout/category_normal"android:title="@string/Nike" /><ListPreferenceandroid:key="voice_reaction"android:dialogTitle="@string/voice_reaction"android:entries="@array/voices"android:entryValues="@array/voices_value"android:layout="@layout/schpwr_background_double_top"android:widgetLayout="@layout/pref_widget_more"android:defaultValue="@string/guan"android:title="@string/voice_reaction" /><ListPreferenceandroid:key="nike_distance"android:dialogTitle="@string/nike_distance"android:entries="@array/distance"android:entryValues="@array/distance_value"android:layout="@layout/schpwr_background_double_middle"android:widgetLayout="@layout/pref_widget_more"android:defaultValue="@string/km"android:title="@string/nike_distance" /><ListPreferenceandroid:key="nike_weight_list"android:dialogTitle="@string/nike_weight_list"android:entries="@array/weight_list"android:entryValues="@array/weight_list_value"android:layout="@layout/schpwr_background_double_middle"android:widgetLayout="@layout/pref_widget_more"android:defaultValue="@string/kg"android:title="@string/nike_weight_list" /><EditTextPreferenceandroid:key="nike_weight"android:layout="@layout/schpwr_background_double_bottom"android:widgetLayout="@layout/pref_widget_more"android:defaultValue="0"android:title="@string/nike_weight" /><PreferenceCategoryandroid:layout="@layout/category_normal"android:title="@string/kongzhi" /><Preference android:key="nike_intent"android:layout="@layout/nike_settings_header_roundcorner_item"android:title="@string/to_nike"><intent android:action="android.intent.action.VIEW"android:data="http://www.android.com" /></Preference>
</PreferenceScreen>
NikeSettings.java
package com.android.settings;import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;public class NikeSettings extends PreferenceActivity implements OnSharedPreferenceChangeListener {private Button mBtn;private TextView mText;private ListPreference voice_reaction;private ListPreference nike_distance;private ListPreference nike_weight_list;private EditTextPreference nike_weight;@Overridepublic void onCreate(Bundle savedInstanceState) {requestWindowFeature(Window.FEATURE_NO_TITLE);super.onCreate(savedInstanceState);setContentView(R.layout.settings_layout);addPreferencesFromResource(R.xml.nike_settings);ListView listView = this.getListView();listView.setCacheColorHint(Color.TRANSPARENT);listView.setSelector(new ColorDrawable(Color.TRANSPARENT));mText = (TextView)findViewById(R.id.general_title);mText.setText(R.string.Nike);mBtn = (Button)findViewById(R.id.back_settings);mBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finish();}});voice_reaction = (ListPreference)findPreference("voice_reaction");nike_distance = (ListPreference)findPreference("nike_distance");nike_weight_list = (ListPreference)findPreference("nike_weight_list");nike_weight = (EditTextPreference)findPreference("nike_weight");voice_reaction.setSummary(voice_reaction.getEntry());nike_distance.setSummary(nike_distance.getEntry());nike_weight_list.setSummary(nike_weight_list.getEntry());nike_weight.setSummary(nike_weight.getText()+nike_weight_list.getEntry());
//改变ListPreference和EditTextPreference时,获取修改后的值并时时的改变summary的值SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);prefs.registerOnSharedPreferenceChangeListener(this);}@Overridepublic void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) {if (key.equals("voice_reaction")) {voice_reaction.setSummary(voice_reaction.getEntry());} else if (key.equals("nike_distance")) {nike_distance.setSummary(nike_distance.getEntry());} else if (key.equals("nike_weight_list")) {nike_weight_list.setSummary(nike_weight_list.getEntry());nike_weight.setSummary(nike_weight.getText()+nike_weight_list.getEntry());} else if (key.equals("nike_weight")) {nike_weight.setSummary(nike_weight.getText()+nike_weight_list.getEntry());}}
}
value/array.xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string-array name="voices"><item>男</item><item>女</item><item>关</item></string-array><string-array name="voices_value"><item>nan</item><item>nv</item><item>guan</item></string-array><string-array name="distance"><item>英里</item><item>公里</item></string-array><string-array name="distance_value"><item>mile</item><item>km</item></string-array><string-array name="weight_list"><item>磅</item><item>公斤</item></string-array><string-array name="weight_list_value"><item>pound</item><item>kg</item></string-array>
</resources>