我目前有一個自定義的Dialog類,它擴展了DialogPreference(當然這是PreferenceScreen的一部分)。在DialogPreference中隱藏默認按鈕
此對話框有自定義按鈕,可處理保存和取消。因此,我想擺脫標準的「正面」和「負面」按鈕。
嘗試使用AlertDialog getButton方法,但沒有成功。
我目前有一個自定義的Dialog類,它擴展了DialogPreference(當然這是PreferenceScreen的一部分)。在DialogPreference中隱藏默認按鈕
此對話框有自定義按鈕,可處理保存和取消。因此,我想擺脫標準的「正面」和「負面」按鈕。
嘗試使用AlertDialog getButton方法,但沒有成功。
使用以下代替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;
}
}
我不知道這是否是最好的方法,但這是我如何做的,它的工作原理。
如果你想創建一個自定義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);
}
}
您可以使用'null'而不是空字符串。 – 2012-05-05 12:31:10
也可以將它們放入onPrepareDialogBuilder(AlertDialog.Builder構建器)而不是構造函數。 – Prizoff
看起來不錯,但不起作用T_T –
非常感謝推動我進入正確的方向。有了你的幫助,我可以達到我想要的。 – zng
該解決方案不必要的複雜。只需將兩個按鈕的文本設置爲空,它們就會消失。 setPositiveButtonText(NULL); setNegativeButtonText(null); 在構造函數中。 –