私はこの最小限のAndroid Studioプロジェクトにボタンだけがあります。ボタンに影を割り当てます:
Android:elevation="3dp"
Android:translationZ="3dp"
Android:stateListAnimator="@null"
Android Studio Designタブに影が表示されます。しかし、xmlエディターにも警告が表示されます。
Atribute ...は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);
}
}
ために Pre-Lollipop
デバイス描画可能なファイルを使用して影または立面図を作成する必要があります。こちらです。
element_background.xmlのようにフォルダにdrawable
ファイルを作成します
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<shape Android:shape="rectangle">
<solid Android:color="#BDBDBD"/>
<corners Android:radius="5dp"/>
</shape>
</item>
<item
Android:left="0dp"
Android:right="0dp"
Android:top="0dp"
Android:bottom="2dp">
<shape Android:shape="rectangle">
<solid Android:color="#ffffff"/>
<corners Android:radius="5dp"/>
</shape>
</item>
</layer-list>
次に、必要な要素に次のコードを追加します。
Android:background="@drawable/element_background"
必要に応じて、Carbonを試すことができます。これは、2.2に戻ってマテリアル機能をバックポートするライブラリです。仰角と生成されたアニメーションシャドウもサポートします。