2012-01-05 75 views
1

我正在尋找一種方法來關閉對話框中使用的xml內的按鈕關閉自定義對話框,或者通過按下對話框中的任意位置關閉它。我擁有的是這個;一個帶有圖像按鈕的佈局,可以打開帶有內容的自定義對話框。我已setCanceledOnTouchOutside(true);並且工作正常,但我需要填充大部分屏幕的對話框,並且用戶可能很難點擊可用的小空間。那麼,我該如何做到這一點?Android中關閉佈局中的自定義對話框

我的Java代碼:

import android.app.Activity; 
import android.app.Dialog; 
import android.content.pm.ActivityInfo; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ImageButton; 

public class Rose extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     this.setRequestedOrientation(
     ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     setContentView(R.layout.rose); 

     ImageButton b = (ImageButton) findViewById(R.id.imageButton1); 
     b.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       Dialog d1 = new Dialog(Rose.this); 
       d1.setContentView(R.layout.tariquet); 
       d1.setCanceledOnTouchOutside(true); 
       d1.show(); 


      } 
     }); 
    } 

} 

我的XML:

<?xml version="1.0" encoding="utf-8"?> 

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:fitsSystemWindows="true" 
    android:isScrollContainer="true" 
    android:minHeight="1100dp" 
    android:minWidth="650dp"> 
    <ImageView 
    android:src="@drawable/rose_tariquet" 
    android:id="@+id/imageView1" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent"></ImageView> 
    <Button android:text="X" 
    android:layout_height="wrap_content" 
    android:id="@+id/button1" 
    android:layout_width="55dp" 
    android:layout_gravity="right"></Button> 

</FrameLayout> 

回答

0
public class CustomizeDialog extends Dialog implements OnClickListener { 
Button close; 
TextView tv; 
public CustomizeDialog(Context context,String Stringcontent) { 
    super(context); 
    requestWindowFeature(Window.FEATURE_NO_TITLE);  
    setContentView(R.layout.custom_diolog_main); 
    tv=(TextView) findViewById(R.id.content); 
    tv.setText(Stringcontent); 
    close = (Button) findViewById(R.id.close); 
    close.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) {  
    if (v == close) 
     dismiss(); 
} 
} 

稱爲:

CustomizeDialog customizeDialog = new CustomizeDialog(CustomDialog.this,"clickme"); 
customizeDialog.show(); 
+0

我似乎無法得到那個工作,不知道我做錯了什麼。我使用上面的代碼創建了一個名爲CustomizeDialog的新Java文件,並替換了ID。 – condensation 2012-01-05 02:45:58

+0

我在編輯它,你可以試試嗎? – pengwang 2012-01-05 06:28:49

+0

我在哪裏放?如果我把它放在代碼的末尾,我會遇到一堆語法錯誤。 – condensation 2012-01-05 20:52:56