我在我的应用中使用了AppBarLayout
内的CoordinatorLayout
。由于某些设计要求,我被迫删除AppBarLayout
元素下方的阴影,通过将其高程属性设置为0来完成(app:elevation="0"
)。执行此操作后,AppBarLayout中的元素,选项卡不响应触摸/单击事件。
通过将高程设置回1dp,元素响应触摸/点击事件,但后来我又回到了阴影......
当AppBarLayout
处于0dp
海拔高度时,是否有人建议如何让元素响应触摸/点击事件?
代码提取:
<android.support.design.widget.CoordinatorLayout
android:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="@dimen/app_bar_height"
app:elevation="0dp">
<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize">
<ImageView
android:layout_width="wrap_content"
android:layout_height="45dp"
android:scaleType="fitCenter"
android:layout_gravity="center"
android:id="@+id/toolbar_logo"
android:maxHeight="45dp"
android:contentDescription="Main logo"/>
</android.support.v7.widget.Toolbar>
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorColor="@color/tab_indicator_color"
app:tabTextColor="@color/primary_text_grey"
app:tabIndicatorHeight="3dp"
android:id="@+id/tab_layout">
</android.support.design.widget.TabLayout>
</android.support.design.widget.AppBarLayout>.......
答案 0 :(得分:2)
通过将CoordinatorLayout
元素替换为LinearLayout
android:orientation="vertical"
来解决此问题。使用CoordinatorLayout
似乎是一个错误的方法。
答案 1 :(得分:1)
由于我遇到了一个非常类似的问题,我想关闭这个循环。
问题不在于height = 0dp,问题在于CoordinatorLayout的行为与FrameLayout类似,这意味着稍后在XML中声明的元素是先前声明的元素的“顶部”。改变为线性布局恰好起作用,因为它不支持“重叠元素”。
正确的解决方案是将AppBarLayout(或任何元素)移动到拦截事件之后声明的任何元素之上。它在升高时起作用的原因&gt; 0是因为在调度触摸事件时考虑了高程,但是在高程相等的情况下,您将遇到同样的问题。