Android中自定义Preference的使用

来源:互联网 发布:中国中车 知乎 编辑:程序博客网 时间:2024/05/15 04:22

有时候为了自定义布局的风格,需要自定义Preference,它的使用很简单,拿设置中的一个例子做为模板:

import com.android.settings.R;import com.google.common.collect.Lists;import android.content.Context;import android.preference.Preference;import android.util.AttributeSet;import android.view.View;import java.util.ArrayList;import java.util.Collection;import java.util.Collections;import java.util.List;/** * Creates a percentage bar chart inside a preference. */public class UsageBarPreference extends Preference {    private PercentageBarChart mChart = null;    private final List<PercentageBarChart.Entry> mEntries = Lists.newArrayList();    public UsageBarPreference(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        setLayoutResource(R.layout.preference_memoryusage);    }    public UsageBarPreference(Context context) {        super(context);        setLayoutResource(R.layout.preference_memoryusage);    }    public UsageBarPreference(Context context, AttributeSet attrs) {        super(context, attrs);        setLayoutResource(R.layout.preference_memoryusage);    }    public void addEntry(int order, float percentage, int color) {        mEntries.add(PercentageBarChart.createEntry(order, percentage, color));        Collections.sort(mEntries);    }    @Override    protected void onBindView(View view) {        super.onBindView(view);        mChart = (PercentageBarChart) view.findViewById(R.id.percentage_bar_chart);        mChart.setEntries(mEntries);    }    public void commit() {        if (mChart != null) {            mChart.invalidate();        }    }    public void clear() {        mEntries.clear();    }}

它的Layout文件如下:PercentageBarChart是自定义的View。

res/layout/preference_memoryusage.xml

<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:minHeight="?android:attr/listPreferredItemHeight"    android:gravity="center_vertical"    android:paddingEnd="?android:attr/scrollbarSize"    android:paddingStart="@*android:dimen/preference_widget_width">    <com.android.settings.deviceinfo.PercentageBarChart        android:id="@+id/percentage_bar_chart"        android:layout_width="match_parent"        android:layout_height="32dip"        android:minHeight="?android:attr/listPreferredItemHeight"        android:gravity="center_vertical"        settings:minTickWidth="6dip"        settings:emptyColor="@color/memory_avail">    </com.android.settings.deviceinfo.PercentageBarChart></LinearLayout>
0 0
原创粉丝点击