Implemented RadioButtonPreference

Change-Id: I047b6a95f3001b60e7500f85c25d507e1ca1ad0f
This commit is contained in:
Lifu Tang
2013-07-30 18:34:35 -07:00
parent 040ce60582
commit fc86f69d3b
5 changed files with 93 additions and 27 deletions

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2006 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Layout used by CheckBoxPreference for the checkbox style. This is inflated
inside android.R.layout.preference. -->
<RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+android:id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:focusable="false"
android:clickable="false" />

View File

@@ -27,14 +27,14 @@
android:key="location_sources"
android:title="@string/location_sources_heading" />
<CheckBoxPreference
<com.android.settings.location.RadioButtonPreference
android:key="location_gps"
android:title="@string/location_gps"
android:summary="@string/location_street_level"
android:dependency="location_toggle"
android:persistent="false" />
<com.android.settings.location.WrappingCheckBoxPreference
<com.android.settings.location.RadioButtonPreference
android:key="location_network"
android:title="@string/location_network_based"
android:summary="@string/location_neighborhood_level"

View File

@@ -40,7 +40,7 @@ import java.util.Observable;
import java.util.Observer;
/**
* Gesture lock pattern settings.
* Location access settings.
*/
public class LocationSettings extends SettingsPreferenceFragment
implements Preference.OnPreferenceChangeListener {
@@ -236,25 +236,3 @@ class WrappingSwitchPreference extends SwitchPreference {
}
}
}
class WrappingCheckBoxPreference extends CheckBoxPreference {
public WrappingCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public WrappingCheckBoxPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
TextView title = (TextView) view.findViewById(android.R.id.title);
if (title != null) {
title.setSingleLine(false);
title.setMaxLines(3);
}
}
}

View File

@@ -0,0 +1,63 @@
/*
* Copyright (C) 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.location;
import android.content.Context;
import android.preference.CheckBoxPreference;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.android.settings.R;
/**
* Check box preference with check box replaced by radio button.
*
* Functionally speaking, it's actually a CheckBoxPreference. We only modified
* the widget to RadioButton to make it "look like" a RadioButtonPreference.
*
* In other words, there's no "RadioButtonPreferenceGroup" in this
* implementation. When you check one RadioButtonPreference, if you want to
* uncheck all the other preferences, you should do that by code yourself.
*/
public class RadioButtonPreference extends CheckBoxPreference {
public RadioButtonPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setWidgetLayoutResource(R.layout.preference_widget_radiobutton);
}
public RadioButtonPreference(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.checkBoxPreferenceStyle);
}
public RadioButtonPreference(Context context) {
this(context, null);
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
TextView title = (TextView) view.findViewById(android.R.id.title);
if (title != null) {
title.setSingleLine(false);
title.setMaxLines(3);
}
}
}