Androidアプリの中央に配置したい約100x 100の背景画像があります。これを行う方法はありますか?
シンプルなアプリの向きの変更に大いに役立つと思います。
ケースにはBitmapDrawableを使用できます。 res/drawable
フォルダーにcentered.xmlを作成します。
<bitmap xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:src="@drawable/your_image"
Android:gravity="center"/>
次に、centered
drawableを背景として使用できます。
質問は古く、答えには1つの大きな弱点があります。画像サイズを変更する可能性はありません。つまり、描画可能なものに完全に依存しているということです。
最新のAndroidデザインライブラリを使用している間、アクティビティビューのルートはCoordinatorLayout
またはDrawerLayout
になり、これらのレイアウトには階層を示すデフォルトのビューがありません。これは、最初の子を意味します。ビューは次のビューによって影が薄くなり、2番目から3番目、そして最後の1つに...が影になります。したがって、背景を中央に配置するには、最初の子としてLinearLayout
を追加し、その中に画像を中央に配置する必要があります。コードスニペット:
<Android.support.v4.widget.DrawerLayout>
<!-- first child -->
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:gravity="center"
>
<ImageView
Android:layout_width="match_parent"
Android:layout_height="60dp"
Android:src="@drawable/some_background"
/>
</LinearLayout>
... next view will be above
LinearLayout
重力オプションによって中央に配置される画像のサイズを完全にカスタマイズできます。 LinearLayout
の幅と高さにmatch_parentを設定することも重要です。これは、中心が親ビューの中心にもなるためです。
同じことがRelativeLayout
または子ビューのオーバーラップを可能にする他のレイアウトでも実行できます。
または、mipmap
イメージを使用する場合は、item
の代わりにbitmap
を使用する必要があります。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@color/app_bg_color" />
<item Android:drawable="@mipmap/ic_launcher_round"
Android:gravity="center"/>
</layer-list>
ConstraintLayoutを使用すると、backgroundタグを直接設定できます。正直なところ、これを解決するのに数時間かかりましたが、あなたが思っているよりもずっと簡単です;)