2013-02-06 18 views
0

我在這裏看的文檔: http://developer.android.com/guide/topics/ui/dialogs.html#PassingEvents有沒有辦法來擴展AlertDialog並完全同意其外觀的控制?

他們所有的例子似乎忽視了這個開發者的潛在願望,完全改變了OK的外觀和/或定位|取消按鈕。

我覺得DialogFragment的解決方案非常接近,但仍然沒有明顯的方法來定義我的活動中的View應該是OK按鈕,以便我可以輕鬆地將回調附加到它。

我錯過了什麼?或者是不是真的不可能操縱按鈕的任何擴展AlertDialog或DialogFragment外觀和位置?

回答

2

您可以使用Dialog並添加自己的自定義佈局,並控制它的每一個視圖的外觀。下面是一個例子你如何能做到這一點:

final Dialog alert = new Dialog(FingerPaintActivity.this, android.R.style.Theme_Light_Panel); 
alert.requestWindowFeature(Window.FEATURE_NO_TITLE); // no title 
alert.getWindow().getAttributes().windowAnimations = R.style.PauseDialogAnimation; // this is used for custom animation when dialog is showing and hiding 
alert.setContentView(getLayoutInflater().inflate(R.layout.stamps, null)); // here is your custom layout 
alert.getWindow().setLayout(width-50, (height-100)); // set height/width 

,您可以使用組偵聽到的意見(例如按鈕)是這樣的:

Button myOkBtn = (Button) alert.findViewById(R.id.myOkBtn); 
myOkBtn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

     } 
    }); 
+0

謝謝,這看起來非常有前途。所以,我沒有100%清楚的唯一的事情就是你的意思是'FingerPaintActivity.this',我假設FingerPaintActivity是啓動這個對話框(當前在前臺的Activity)的那個,那麼傳遞'this'與'FingerPaintActivity.this'? –

+0

這是創建「對話框」所需的上下文。這段代碼被放在'OnClickListener'中,這就是爲什麼你不能只使用'this'並且我需要聲明'Activity's上下文。這就是原因。你只能在你的情況下使用'this'。 – hardartcore

相關問題