2017-05-30 52 views
0

我發起服務膨脹與以下PARAMS一個chatHead視圖觸摸:的Android聊天頭禁用整行

windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 
     // use your custom view here 
     floatingView = LayoutInflater.from(this).inflate(R.layout.screenshot_layout, null); 

     // floatingView = View.inflate(getBaseContext(), R.layout.screenshot_layout,null);   //floatingView.setOnTouchListener(mOnTouchListener); 
     params = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_PHONE, 
       WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, 
       PixelFormat.TRANSLUCENT); 

繼反映: enter image description here

現在的問題是:整個平行於圖標的區域(帶)的禁用觸摸,這不是預期的。我試圖用窗口管理器的參數來調試,但問題依然存在。在這裏尋找解決方案。

添加XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/screenShot_root" 
    android:background="@android:color/transparent"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_alignParentRight="true" 
     android:id="@+id/ll_screenshot_head" 
     android:orientation="vertical" 
     android:gravity="center"> 

     <ImageView 
      android:layout_width="65dp" 
      android:layout_height="65dp" 
      android:id="@+id/iv_camera" 
      android:src="@drawable/screenshot_external_icon"/> 

     <ImageView 
      android:layout_width="40dp" 
      android:layout_height="40dp" 
      android:layout_marginTop="5dp" 
      android:id="@+id/iv_close" 
      android:src="@drawable/cross_external_icon"/> 

    </LinearLayout> 



</RelativeLayout> 
+0

你確定你的xml佈局沒有這樣做嗎? – Denny

+0

@Denny,XML在這裏似乎不成問題。它包裹在每個視圖上。附上上面的XML代碼供您參考。 – asdec90

+1

出於測試目的,當您將根視圖的寬度更改爲100dp時,它是否仍然發生? – Denny

回答

0

那麼這個問題是由在運行時發現高度&寬度佈局的如下解析:

int w = (int) (TypedValue.applyDimension(
       TypedValue.COMPLEX_UNIT_DIP, 67, getResources().getDisplayMetrics())); 
     int h = (int) (TypedValue.applyDimension(
       TypedValue.COMPLEX_UNIT_DIP, 114, getResources().getDisplayMetrics())); 

其中,67是UI的硬編碼的寬度在dp和114是dp的高度。上面給了我根據手機屏幕分辨率的像素高度和寬度。

我所定義的新PARAMS爲:

params = new WindowManager.LayoutParams(
       w,h, 
       WindowManager.LayoutParams.TYPE_PHONE, 
       WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, 
       PixelFormat.TRANSLUCENT); 

因此解決平行於UI禁用觸摸區域的問題。