2017-07-30 9 views
0

私は、画面全体を満たすためにmatch_parentに設定されている他のアプリに描画するレイアウトを持っています。このレイアウトでは、私はチャットヘッドを持っています。これをドラッグすると、より多くを明らかにするためにクリックできます。通常はレイアウトをwrap_contentに設定し、必要な画面スペースしか占有しませんが、Android SpringAnimationsは大きな親なしでチャットヘッドを投げることができません。Androidアプリ上でクリッピング不可能なレイアウトを描く

問題は私です私は自分のレイアウトを上に描いた背景と対話できません。以前はRelativeLayout root_containerclickable: falsefocusable: falseに設定しようとしましたが、それでもプログラムでは何もクリックできません。私のroot_containerがクリックを登録しない解決策はありますか?その内のチャットヘッドは続行できますか?

私はこの問題は他のunfocusable/unclickable質問とは違うと感じました。私が気付いていないことを変える可能性のある "他のアプリを引き出す"機能が含まれています。

<!--Root container - Causing the problems with elements beneath it--> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/root_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <!--Small Chat head view that can be dragged around root_container--> 
    <RelativeLayout 
     android:id="@+id/collapse_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:orientation="vertical" 
     android:visibility="visible"> 

     <ImageView 
      android:id="@+id/floating_icon" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:src="@drawable/floating_icon" 
      tools:ignore="ContentDescription" /> 

     <ImageView 
      android:id="@+id/close_button" 
      android:layout_width="20dp" 
      android:layout_height="20dp" 
      android:layout_marginLeft="40dp" 
      android:src="@drawable/ic_close" 
      tools:ignore="ContentDescription" /> 
    </RelativeLayout> 
</RelativeLayout> 

編集:私はこのようなサービスでは、私のレイアウトを呼び出す:外観を取るための

mFloatingView = LayoutInflater.from(this).inflate(R.layout.layout_floating_view, null); 

final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.MATCH_PARENT, 
      WindowManager.LayoutParams.MATCH_PARENT, 
      WindowManager.LayoutParams.TYPE_PHONE, 
      WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
      PixelFormat.TRANSLUCENT); 

mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 
mWindowManager.addView(mFloatingView, params); 

ありがとう!

+0

'@ + id/root_container'を' clickable:false' ....と設定して、 '@ + id/collapse_view'を' clickable:true'に設定してみてください...何が起こったかを報告してください – MohammedAlSafwan

+0

@MohammedAlSafwan 'clickable:false'は登録していないようです。チャットヘッドにはonTouchリスナーがあることに注意してください。そのため、既にクリック可能です。 –

答えて

0

いくつかの調査で、これは可能なさまざまな悪意のある機会のために可能ではないことがわかりました。ビューがFLAG_NOT_TOUCHABLEになっていれば、それを操作することはできず、タッチイベントをディスパッチしようとすると、ホーム画面には移動しません。ソリューションは単純にリファクタリングするので、親ビューはホーム画面を満たしません。

関連する問題