如何使所有视图不可点击

时间:2019-03-08 16:43:18

标签: android

我有一个LinearLayout,其中包含许多视图(ButtonTextView),并且我希望使其内部的每个视图都无法单击,直到我处理服务器请求为止。我该怎么办?

2 个答案:

答案 0 :(得分:0)

您可以尝试 myView.setEnabled(false);

myView.setClickable(false); myView.setFocusable(false);

基本上enabled false不响应任何响应,而clickable false仍在运行时进行响应。

答案 1 :(得分:0)

您可以将LinearLayout放置在Relative中,然后在clickable = true处在线性上方添加另一个Relative。

我建议您还添加一个进度栏,也许还添加一些背景不透明度,以便用户知道其加载情况。 因此,当您等待请求时,将包含进度条可见性的亲戚设置为可见,完成后将其设置为消失。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">             
         <!-Add your elements-->
    </LinearLayout>

    <RelativeLayout
        android:id="@+id/progress_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/semi_gray"
         android:clickable="true"
        android:visibility="gone">

        <ProgressBar
            android:id="@+id/progress_bar"
            android:layout_width="@dimen/spacing_mid_large"
            android:layout_height="@dimen/spacing_mid_large"
            android:layout_centerInParent="true"
            android:indeterminate="true"
            android:visibility="visible" />
    </RelativeLayout>

</RelativeLayout>