隐藏DialogPreference中的默认按钮

时间:2011-09-01 21:20:59

标签: android button dialog

我目前有一个扩展DialogPreference的自定义Dialog类(当然它是PreferenceScreen的一部分)。

此对话框具有处理保存和取消的自定义按钮。因此,我想摆脱标准的“积极”和“消极”按钮。

尝试使用AlertDialog getButton方法,但没有成功。

3 个答案:

答案 0 :(得分:11)

如果要创建自定义DialogPreference,则必须创建自己的类并扩展DialogPreference。要隐藏按钮,请在构造函数

中使用setPositiveButtonText(null);setNegativeButtonText(null);
package ...;

import android.content.Context;
import android.preference.DialogPreference;
import android.util.AttributeSet;

public class MyDialogPreference extends DialogPreference {

    public MyDialogPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
        setPositiveButtonText(null);
        setNegativeButtonText(null);
    }
}

答案 1 :(得分:2)

你的xml中的

使用以下代替DialogPreference:

<Preference
    android:title="This acts as a button"
    android:key="button"
    android:summary="This can act like a button to create it's own dialog"/>

然后在java:

Preference button = (Preference)findPreference("button");
button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

            @Override
            public boolean onPreferenceClick(Preference arg0) {
                showDialog(MY_DIALOG); // let's say MY_DIALOG is 'final int MY_DIALOG = 1;' in the class body
                return false;
            }
        });

然后添加到您的班级主体:

@Override
    protected Dialog onCreateDialog(int id) {

    switch (id) {       

    case SHOW_APP_STRING:
      LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      View mylayout = inflater.inflate(R.layout.mylayout, null);


     final AlertDialog myDialog = new AlertDialog.Builder(this)
     .setView(mylayout)
     .show();
      //The buttons are below the dialog so you can close the dialog within your button listeners
      Button save = (Button)myLayout.findViewById(R.id.save);
      Button cancel = (Button)myLayout.findViewById(R.id.cancel);
      //set onClickListeners for both of your buttons

      return myDialog;
    }

}

我不确定这是不是最好的方法,但这就是我做的方式,而且有效。

答案 2 :(得分:0)

您还可以在扩展export default () => <h1 className="bg-primary text-white text-center p-2"> Hello Adam </h1> 的类的构造函数中将defStyleAttr设置为R.attr.preferenceScreenStyle

它将删除对话框的按钮栏