【问题标题】:How to add a Button to SettingsActivity template? [duplicate]如何将按钮添加到 SettingsActivity 模板? [复制]
【发布时间】:2019-04-09 01:30:23
【问题描述】:

我正在 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" />

如何做正确或简单的方法?

【问题讨论】:

    标签: android android-layout settings


    【解决方案1】:

    添加一个父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"
    【解决方案2】:

    您可以在首选项屏幕中添加按钮作为首选项

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

    【讨论】:

    • 如果可行,请标记为已接受 :)
    • 谢谢,我是从重复的那个中得到的,但这总结了我必须做的事情。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 2014-06-28
    相关资源
    最近更新 更多