Intereting Posts
Полезно ли использовать весь макет WebView в собственном приложении для Android? Как загрузить файл на Android с помощью Retrofit library? Результаты Amazon Android App Market Установить цвет фона программно Как получить значок, связанный с определенной учетной записью, из AccountManager.getAccounts () Деформирование изображения в android Аварийный сигнал AlarmManager, случайно отсутствующий, когда телефон не используется Может ли IntentService работать бесконечно? InflateException: двоичная строка XML-файла # 22: ошибка раздувания класса <unknown> Как я могу наложить собственный вид поверх CordovaWebView PhoneGap на Android? Как заблокировать ориентацию телефона в Android для предотвращения ландшафтного режима Поддерживает ли поддержка андроида видео обрезку? Преобразование минут в миллисекунды Java / android Как открыть приложение из виджета в Android? Nullpointer при использовании пользовательского адаптера в меню списка действий (с совместимостью -7)

Android: использование предварительного API-интерфейса Pre Pre API 14

Pre-API Level 14 не имеет предпочтения переключателя. Если я использую preferences.xml для создания экрана настроек, есть ли способ различать уровни API? Итак, имея флажок для старых версий и коммутатор для API 14?

Что было бы лучше всего?

Solutions Collecting From Web of "Android: использование предварительного API-интерфейса Pre Pre API 14"

Если я использую preferences.xml для создания экрана настроек, есть ли способ различать уровни API? Итак, имея флажок для старых версий и коммутатор для API 14?

Создайте каталог res/xml-v14/ , содержащий файл preferences.xml который имеет свой SwitchPreference . Создайте каталог res/xml/ , содержащий файл preferences.xml который заменяет SwitchPreference с помощью CheckBoxPreference . Android загрузит правильную версию preferences.xml на основе версии устройства, на которой работает приложение.

Вы также можете использовать библиотеку android-switch-backport, которая имеет SwitchPreference, которая работает на Android 2.1+.

https://github.com/BoD/android-switch-backport

Существует обходное решение, которое я не уверен, насколько оно полно, путем обертывания, которое представление использовать в CheckBoxPreference (может пропустить некоторые функции, но в общем случае оно работает).

Обходной путь будет использовать CheckBoxPreference для pre-API-14 и SwitchPreference для API 14 и выше.

Вот код:

 public class SwitchPreference extends CheckBoxPreference { android.preference.SwitchPreference _switchPreference =null; public SwitchPreference(final Context context) { super(context); if(VERSION.SDK_INT>=VERSION_CODES.ICE_CREAM_SANDWICH) _switchPreference=new android.preference.SwitchPreference(context); } public SwitchPreference(final Context context,final AttributeSet attrs) { super(context,attrs); if(VERSION.SDK_INT>=VERSION_CODES.ICE_CREAM_SANDWICH) _switchPreference=new android.preference.SwitchPreference(context,attrs); } public SwitchPreference(final Context context,final AttributeSet attrs,final int defStyle) { super(context,attrs,defStyle); if(VERSION.SDK_INT>=VERSION_CODES.ICE_CREAM_SANDWICH) _switchPreference=new android.preference.SwitchPreference(context,attrs,defStyle); } @Override protected View onCreateView(final ViewGroup parent) { final View view; if(VERSION.SDK_INT>=VERSION_CODES.ICE_CREAM_SANDWICH) { view=_switchPreference.getView(null,parent); // set as checked the view and the view's children, each in case it extend from Checkable ViewUtil.setChecked(view,isChecked()); // set as non-clickable the view and the view's children ViewUtil.setClickable(view,false); } else view=super.onCreateView(parent); return view; } 

Вы можете использовать SwitchCompat:

 <android.support.v7.widget.SwitchCompat android:id="@+id/switch_compat" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:checked="true" android:textOff="OFF" android:textOn="ON" app:showText="false" android:focusable="false" android:focusableInTouchMode="false"/> 

On setOnCheckedChangeListener:

 SwitchCompat switchCompat = (SwitchCompat)convertView.findViewById(R.id.switch_compat); switchCompat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { textView.setText("check"); } else { textView.setText("unCheck"); } } }); 

Я надеюсь помочь вам.

Попробуйте этот код:

 public class SettingsActivity extends PreferenceActivity { @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_settings); PreferenceScreen rootScreen = getPreferenceManager() .createPreferenceScreen(this); setPreferenceScreen(rootScreen); Preference NotifCheck=null; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { NotifCheck = new SwitchPreference(this); } else { NotifCheck = new CheckBoxPreference(this); } NotifCheck.setKey("ShowNotification"); NotifCheck.setTitle(R.string.ShowNotification); NotifCheck.setEnabled(true); rootScreen.addPreference(NotifCheck); // Show the Up button in the action bar. setupActionBar(); } }