web-dev-qa-db-ja.com

android-オーバードローレイアウトにより、LinearLayoutを介したタッチが可能になります

次のUIでは、画面全体をオーバーレイする下にこれがあります。 LinearLayoutは透過的であり、その下のコントロールをクリックまたはタッチ可能にすることができます。基本的に、このLinearLayoutの下のリストとクリックコントロールをスクロールできます。どうすればそれを無効にできますか?

添付の例を参照してください。enter image description here

ありがとうございました

<RelativeLayout
     xmlns:Android="http://schemas.Android.com/apk/res/Android" 
    Android:id="@+id/rlExtNavbar" 
    Android:orientation="vertical"
    Android:layout_width="match_parent" 
    Android:layout_height="match_parent"
    Android:gravity="fill_vertical"
    Android:layout_gravity="fill_vertical"
    Android:background="@color/transparent" xmlns:tools="http://schemas.Android.com/tools" tools:ignore="Overdraw">
    <RelativeLayout
        Android:id="@+id/expandedNavbarLayout" 
        Android:orientation="vertical"
        Android:layout_width="fill_parent" 
        Android:layout_height="wrap_content" >
    </RelativeLayout>
    <LinearLayout
        Android:id="@+id/transparentLayout" 
        Android:orientation="vertical"
        Android:layout_width="match_parent" 
        Android:layout_height="wrap_content"
        Android:layout_below="@id/expandedNavbarLayout"
        Android:focusableInTouchMode="false"
        Android:focusable="false"
        Android:background="@color/fulltransparent">
    </LinearLayout>

</RelativeLayout>
18
dropsOfJupiter

XMLのLinearLayoutにAndroid:clickable="true"プロパティを設定するだけで、クリックが通過するのを防ぐことができます。クリックリスナーは必要ありません。

113
Theo

線形レイアウトにクリックを割り当て、それで解決しました。正直なところ、そもそもこのように機能するべきではありませんが、それで問題は解決しました。クリックは空です。

2
dropsOfJupiter

私にとってうまくいったのは、XMLの内部RelativeLayoutの前にLinearLayoutを配置することでした。

0
Rooster242