Android XML: android:elevation vs. app:elevation

38
我应该在什么情况下使用 android:elevationapp:elevation?这两者有何区别?

1
我谷歌了一下,但没有找到任何有用的结果。 - Amplify
3个回答

29

希望我可以帮助你,让我们通过一个例子来谈谈:

<android.support.design.widget.FloatingActionButton
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    ...
    android:elevation="@dimen/elevation_medium"
    /> 

android:elevation属性只在API级别21及以上版本中有效。attribute

<android.support.design.widget.FloatingActionButton
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    ...
    app:elevation="@dimen/elevation_medium"
    /> 
在这种情况下,app:elevation 属性属于 FloatingActionButton 样式中的一个,该样式在 Android Design Support Library 中,将在框架的版本 4 及以后的版本中使用,而不是像 android:elevation 一样只能在版本 21 中使用。

3
AppBarLayout有app:elevation属性,但似乎不起作用了。最近的支持库更新中好像把它删掉了。 - Chris

19

app:elevation - 如果您正在使用支持库(用于支持旧版Android) android:elevation - 如果您没有使用支持库


4
请注意,这并不适用于所有的视图组。例如,我正在使用支持库,但无法在工具栏中使用app:elevation。 - Filipe Brito
4
我也无法在LinearLayout中使用 app:elevation,但 ViewCompat.setElevation(View view, float elevation); 是有效的。 - Weekend

2
最初的回答:

还有一件事:

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/spacing"
    android:src="@drawable/svg_my_location"
    app:elevation="4dp" />

<androidx.constraintlayout.widget.ConstraintLayout
    android:id="@+id/bottomSheet"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:background="@drawable/shape_rect_round_white"
    app:elevation="8dp"
    app:behavior_hideable="true"
    app:behavior_peekHeight="100dp"
    app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"/>

app中使用FloatingActionButton后,可以看到该按钮。


<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/spacing"
    android:src="@drawable/svg_my_location"
    android:elevation="4dp" />

<androidx.constraintlayout.widget.ConstraintLayout
    android:id="@+id/bottomSheet"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:background="@drawable/shape_rect_round_white"
    android:elevation="8dp"
    app:behavior_hideable="true"
    app:behavior_peekHeight="100dp"
    app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"/>

在使用android中,如果底部面板叠在上面,FloatingActionButton会变得不可见。

建议对FAB进行相应的位置调整,以便更好地显示。

"Original Answer"翻译成:"最初的回答"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接