Я разрабатываю на Android (пока не удобно) SettingsActivity, я получил один на шаблонах, сделал некоторые настройки, и он работает нормально. Но я хочу добавить кнопку в конец. Мой xml теперь такой:
<PreferenceScreen xmlns:android = "http://schemas.android.com/apk/res/android">
<SwitchPreference
android:defaultValue = "true"
android:key = "gravacao_baby_near"
android:summaryOff = "Quando o dispositivo estiver fora da zona segura, reproduzir aúdio gravado"
android:summaryOn = "Quando o dispositivo estiver fora da zona segura, reproduzir aúdio gravado"
android:title = "Habilitar reprodução da gravação" />
<EditTextPreference
android:capitalize = "words"
android:defaultValue = "Informações de emergência"
android:inputType = "textMultiLine"
android:key = "texto_tag"
android:maxLines = "10"
android:selectAllOnFocus = "true"
android:singleLine = "false"
android:title = "Texto exibido por Tag" />
<ListPreference
android:defaultValue = "10"
android:entries = "@array/settings_list_preference_titles"
android:entryValues = "@array/settings_list_preference_values"
android:key = "distancia_max_permitida"
android:negativeButtonText = "@null"
android:positiveButtonText = "@null"
android:title = "Distância aproximada máxima permitida" />
</PreferenceScreen>
То, что я пытался сделать, это добавить после последнего ListPreference следующий код, но он говорит: «Здесь это запрещено»:
<Button
android:id = "@+id/gravarTag"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:text = "@string/gravarTag"
android:textAllCaps = "false" />
Как это сделать правильно или проще?
Добавьте родительский LinearLayout, а затем добавьте экран настроек, дочерние кнопки
<LinearLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
android:height = "match_parent"
android:width = "match_parent>
<PreferenceScreen
<SwitchPreference
android:defaultValue = "true"
android:key = "gravacao_baby_near"
android:summaryOff = "Quando o dispositivo estiver fora da zona segura, reproduzir aúdio gravado"
android:summaryOn = "Quando o dispositivo estiver fora da zona segura, reproduzir aúdio gravado"
android:title = "Habilitar reprodução da gravação" />
<EditTextPreference
android:capitalize = "words"
android:defaultValue = "Informações de emergência"
android:inputType = "textMultiLine"
android:key = "texto_tag"
android:maxLines = "10"
android:selectAllOnFocus = "true"
android:singleLine = "false"
android:title = "Texto exibido por Tag" />
<ListPreference
android:defaultValue = "10"
android:entries = "@array/settings_list_preference_titles"
android:entryValues = "@array/settings_list_preference_values"
android:key = "distancia_max_permitida"
android:negativeButtonText = "@null"
android:positiveButtonText = "@null"
android:title = "Distância aproximada máxima permitida" />
</PreferenceScreen>
<Button
android:id = "@+id/gravarTag"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:text = "@string/gravarTag"
android:textAllCaps = "false" />
</LinearLayout>
Вы можете добавить кнопку в качестве предпочтения на экране настроек
<Preference android:title = "@string/gravarTagBtn"
android:key = "gravarTag"
android:widgetLayout = "@layout/btn_pref"
android:summary = "This is my button"/>
Затем индивидуальная раскладка кнопок btn_pref.xml
<?xml version = "1.0" encoding = "utf-8"?>
<Button
xmlns:android = "http://schemas.android.com/apk/res/android"
android:id = "@+id/btn"
android:text = "@string/ajustes_almacenamiento_bt"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content">
</Button>
И в методе onCreate
Preference button = findPreference("gravarTag");
button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
//code for what you want it to do
return true;
}
});
Отметьте его принятым, если он работает :)
Спасибо, я получил это из дубликата, но это подводит итог тому, что я должен был сделать. Большое спасибо!
Это хороший отдых, но у меня сейчас проблема с моей активностью.
E/AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.preference.LinearLayout"