2016-02-05 84 views
1

我試圖在Xamarin.Android中實現底部工作表,並且我想禁用所有不是底部工作表(即主佈局)的所有觸摸,當底部工作表處於活動狀態時。如何在Android中禁用所有觸摸佈局

Main.axml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:id="@+id/main_layout"> 
<include 
    android:id="@+id/toolbar" 
    layout="@layout/toolbar" /> 

<!-- Main Layou --> 
<FrameLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/main_content" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" > 
    <Button 
     android:id="@+id/btn_test" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/logout" 
     android:layout_gravity="center" /> 
    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|right" 
     android:layout_margin="16dp" 
     android:clickable="true" 
     android:src="@drawable/ic_plus" /> 
</FrameLayout> 

<FrameLayout 
    android:id="@+id/tint" 
    android:background="#000000" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

<!-- Bottom sheet --> 
<FrameLayout 
    android:id="@+id/bottom_fragment_container" 
    android:layout_width="match_parent" 
    android:layout_height="160dp" 
    android:background="#E0E0E0" 
    android:layout_gravity="bottom" 
    android:elevation="16dp" 
    android:translationY="160dp" /> 

我試圖遍歷所有的孩子,禁用它們,但改變了按鈕的外觀,我想避免這種情況。我也嘗試將版式的Enabled屬性設置爲false,但該按鈕仍然是可觸摸的。

我想我需要以某種方式攔截所有觸摸,然後他們到達按鈕(以及其他所有將在那裏),但我不知道該怎麼做。通過攔截所有觸摸,我也可以在觸摸後隱藏底部表單。

+0

其中的一種方式可能是遍歷你的佈局組件作爲一個xml三個設置的所有按鈕,點擊組件禁用。 –

回答

1

創建一個覆蓋整個屏幕的透明RelativeLayout,並使用其中的android:clickable="true"屬性確保它攔截所有點擊事件。

然後將android:layout_alignParentBottom添加到您的底部工作表並將其放入此新創建RelativeLayout。這樣它就會出現在底部,其他一切都不會被點擊。

<FrameLayout> 

    <!-- Main Layout --> 


    <RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#0000" 
    android:clickable="true"> 

    <FrameLayout 
     android:id="@+id/bottom_fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="160dp" 
     android:background="#E0E0E0" 
     android:layout_alignParentBottom="true" 
     android:elevation="16dp" 
     android:translationY="160dp" /> 

    </RelativeLayout> 

</FrameLayout> 
相關問題