2011-05-04 2 views
6

아래 코드를 사용하여 사용자 지정 기본 설정을 만듭니다. xml 레이아웃 파일은 Button, EditTextTextView입니다. 이 사용자 정의 레이아웃은 Alert 안에 "OK"및 "Cancel"버튼과 함께 나타납니다. 이 모든 것이 잘 작동합니다.중립적 인 단추를 사용하여 사용자 지정 기본 설정을 만드는 방법은 무엇입니까?

"OK"및 "Cancel"단추 옆에 세 번째 단추 (중립 단추)를 추가하고 싶습니다. AlertBuilder 클래스를 실험했지만 사용자 정의 xml 레이아웃과 중성 버튼을 클릭합니다.

어떻게이 작업을 수행 할 수 있습니까?

현재

이 ...

public class MelsMessage extends DialogPreference { 

    Button bMessage; 
    EditText eMessage; 
    TextView tMessage; 

    public MelsMessage(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 



    protected View onCreateDialogView() { 

     LayoutInflater layoutInflater = LayoutInflater.from(getContext()); 
     View view = layoutInflater.inflate(R.layout.dialog_pref_mess, null); 

     //UI elements 

     bMessage = (Button) view.findViewById(R.id.buttonMessage); 
     eMessage = (EditText) view.findViewById(R.id.edittextMessage); 
     tMessage = (TextView) view.findViewById(R.id.textviewMessage); 


     return view;   
    } 

} 

답변

0

당신이 onCreateDialogView을 무시하고 당신은 setPositiveButtonsetNegativeButton을 설정하지 확인 버튼과 취소 버튼이 사라져야합니다. 그렇지 않습니까? 이 방법에서는 기본 레이아웃을 재정의하고 맞춤 레이아웃을 설정하기 때문입니다.

그런 경우라면 3 개의 버튼이있는 사용자 정의 하단 레이아웃을 만들어서 비정상적으로 추가해야합니다. 검색 및 모든 필요한 구현이있는 "아래쪽 ButtonBar"구현하십시오. 어떤 메서드 또는 일반적인 대화 상자에서 중립적 인 단추를 구현하는 방법을 문서에서 볼 수 없기 때문에. 나는 귀하의 질문에 조금 오래보고 어쩌면 당신은 이미 귀하의 질문에 대한 답을 가지고 있지만 여기 클래스의 솔루션입니다

Dialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface dialog, int id) { 



    } }); 

Dialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Cancle", new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface dialog, int id) { 



    }}); 

Dialog.setButton(AlertDialog.BUTTON_NEUTRAL, "Do Nothing" new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface dialog, int id) { 


    }}); 
0

은 3 개 버튼을 사용하여 사용자 정의 대화 상자를 만들거나 쓸 수있는 코드가 DialogPreference를 확장합니다.

먼저 당신은 당신의 MelsMessage 클래스 무시onPrepareDialogBuilder 방법이 다음 setNeutralButton 방법

@Override 
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) 
{ 
    super.onPrepareDialogBuilder(builder); 
    builder.setNeutralButton("hello", this); 
} 

thisDialogPreference 클래스가 구현 DialogInterface.OnClickListener 인터페이스입니다.

당신이해야 할 마지막 일은 당신의 MelsMessage에 무시onClick 방법 클래스 :

@Override 
public void onClick(DialogInterface dialog, int which) 
{ 
    super.onClick(dialog, which); 

    switch (which) 
    { 
     case DialogInterface.BUTTON_POSITIVE: 
      // do things for the right button 
      break; 

     case DialogInterface.BUTTON_NEGATIVE: 
      // do things for the left button 
      break; 

     default: 
      // do things for the center button 
      break; 
    } 
} 

당신은 당신이해야 할 모든이에게 또 다른 클래스의 클릭을 처리하려면 이 클래스에 DialogInterface.OnClickListener을 구현하십시오.

희망이 도움이 될 것입니다. 건배.

4

처럼

+0

나는이 대답을 사용하여 XML에 사용자 정의 클래스를 포함 시켰습니다 (http://stackoverflow.com/a/20565983/1898523). – wrapperapps

관련 문제