Как добавить кнопку в шаблон SettingsActivity?

Я разрабатываю на 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" />

Как это сделать правильно или проще?

0
0
106
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Добавьте родительский 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>

Это хороший отдых, но у меня сейчас проблема с моей активностью. E/AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.preference.LinearLayout"

henrique.rivero 09.04.2019 04:36
Ответ принят как подходящий

Вы можете добавить кнопку в качестве предпочтения на экране настроек

<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;
                }
            });

Отметьте его принятым, если он работает :)

Izhan Ali 09.04.2019 04:35

Спасибо, я получил это из дубликата, но это подводит итог тому, что я должен был сделать. Большое спасибо!

henrique.rivero 09.04.2019 04:44

Другие вопросы по теме