现在的位置: 首页 > 综合 > 正文

android Preference ListPreference EditTextPreference

2013年10月17日 ⁄ 综合 ⁄ 共 5282字 ⁄ 字号 评论关闭

android中包含Preference ListPreference  EditTextPreference等控件布局的写法,已经操作各个控件的事件介绍,如下

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <PreferenceCategory
        android:layout="@layout/category_normal"
        android:title="@string/Nike" />

    <ListPreference
        android: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" />

    <ListPreference
        android: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" />

    <ListPreference
        android: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" />

    <EditTextPreference
        android:key="nike_weight"
        android:layout="@layout/schpwr_background_double_bottom"
        android:widgetLayout="@layout/pref_widget_more"
        android:defaultValue="0"
        android:title="@string/nike_weight" />

    <PreferenceCategory
            android: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;
	@Override
	public 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() {
	                @Override
	                public 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);
	}

	@Override
	public 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>

抱歉!评论已关闭.