2013-10-15 66 views
2

如何使這樣的功能?觸摸任何地方繼續

enter image description here

我有兩個想法,但兩者不知道如何充分實現。

1)經過一定的動作後,在另一個頂部顯示一個佈局(我不知道該怎麼做,也許它不會是正確的,因爲沒有第一個佈局的可見元素),然後實現OnClickListener爲第二個佈局。

2)在佈局頂部繪製一個矩形,它也使我不正確。因爲我做:投入的RelativeLayout上的活動

ShapeDrawable line = new ShapeDrawable(new RectShape()); 
    line.setIntrinsicHeight(200); 
    line.setIntrinsicWidth(150); 
    line.getPaint().setColor(Color.BLACK); 
    image.setBackgroundDrawable(line); 

<ImageView 
    android:id="@+id/rectangleIv" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 

平局,但在所有的RelativeLayout元素的高度和寬度FILL_PARENT這個矩形不包括他們,原來,只是改變背景顏色。問題是setBackgroundDrawable已被棄用。

UPD解決問題,通過自定義對話框

protected void showCustomDialog() { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    LayoutInflater inflater = this.getLayoutInflater(); 

    customDialog = builder.setView(inflater.inflate(R.layout.custom_dialog, null)).create(); 

    WindowManager.LayoutParams lp = customDialog.getWindow().getAttributes(); 
    lp.width = WindowManager.LayoutParams.FILL_PARENT; 
    lp.height = WindowManager.LayoutParams.FILL_PARENT; 
    lp.dimAmount = 0.4f; 

    customDialog.getWindow().setAttributes(lp); 
    customDialog.show(); 
} 

回答

2

創建自定義對話框(http://developer.android.com/guide/topics/ui/dialogs.html#CustomLayout)採用這種設計,則設置爲TRUE setCanceledOnTouchOutside(true)setCanceledOnTouchOutside(true)

希望它可以幫助

UPDATE

首先創建style.xml風格文件名稱CustomDialogTheme並添加顏色TransparentGrey是這樣的:

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

    <color name="TransparentGrey">#7F000000</color> 
    <style name="CustomDialogTheme" parent="@android:style/Theme.Dialog"> 
     <item name="android:windowBackground">@color/TransparentGrey</item> 
     <item name="android:windowIsFloating">false</item> 
     <item name="android:windowNoTitle">true</item> 
    </style> 
</resources> 

其次爲對話框創建佈局(R.layout.customdialog):

final Dialog dialog = new Dialog(YourCurrentActivity.this, 
       R.style.CustomDialogTheme); 
    dialog.setContentView(R.layout.dialog_fichaarticle); 
    dialog.setCancelable(true); 
    dialog.setCanceledOnTouchOutside(true); 

    RelativeLayout rlTouchEveryWhere = (RelativeLayout) dialog.findViewById(R.id.iTouchEveryWhere) 

    rlTouchEveryWhere.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      dialog.dismiss(); 

     } 
    });  

    dialog.show(); 
+0

自定義對話框這是一個有趣的方法。但問題是它隱藏了背景中的元素 – boroloro

+0

如果設置了暗淡的對話框,將不會隱藏背景上的元素:WindowManager.LayoutParams lp = dialog.getWindow()。getAttributes(); lp.dimAmount = 0.0f; //昏暗的水平。 0.0 - 無暗淡,1.0 - 完全不透明 dialog.getWindow()。setAttributes(lp); – Ezrou

+0

或者如果你想設置模糊對話框設置:dialog.getWindow()。addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND); – Ezrou

1

給你的根佈局在XML像這樣的ID:

<LinearLayout android:id="@+id/root_layout" //relative layout 
在活動的onCreate

LinearLayout layout=(LinearLayout)findViewById(R.id.root_layout); 

並設置OnClickListener來佈局。

+0

我知道OnClickListener佈局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/iTouchEveryWhere" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:orientation="vertical"> <!-- ImageView or TextView with "Touch everywhere to continue..." --> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:clickable="false" /> </RelativeLayout> 

然後,像這樣的對話編碼,我寫了它。 但我不知道如何在我的情況下使用它。我肯定可以在一定的操作後(而不是在onCreate)設置OnClickListener。但是如何讓前面背景的顏色發生變化(就像我附上的圖片) – boroloro