我有这个只有一个按钮的最小的 Android Studio 项目。我为按钮分配了一个阴影:
android:elevation="3dp"
android:translationZ="3dp"
android:stateListAnimator="@null"
我在 Android Studio Design 选项卡中看到了阴影。但我也在 xml 编辑器中收到警告
属性 ... 仅用于 API 级别 21 及更高级别(当前最小值为 16)
实际上,按钮阴影仅在带有 的模拟器中显示API level 21 or higher
,并且在带有 的模拟器中显示为平面,完全没有阴影API level lower than 21
。
所以具体的问题是,如何在API's lower than 21
.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:id="@+id/main_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:weightSum="1">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="20dp"
android:layout_weight="2.24">
<Button
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginLeft="20dp"
android:layout_marginBottom="20dp"
android:elevation="5dp"
android:translationZ="5dp"
android:stateListAnimator="@null"
android:background="@android:color/holo_green_light"
android:text="BUTTON"/>
</RelativeLayout>
</LinearLayout>
</ScrollView>
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}