Dans mon projet Android, je ne sais pas trop comment faire en sorte que mon image d'arrière-plan remplisse la totalité de l'élément racine RelativeLayout
en XML, qui correspond à la taille de l'écran. Je veux être sûr que cela fonctionne pour tous les formats d'image, afin que l'image soit coupée verticalement ou horizontalement si nécessaire. Est-ce que quelqu'un sait comment faire cela facilement? J'ai seulement vu des questions concernant ImageView
s et Button
s, mais pas vraiment génériques View
s.
Mon fichier XML actuellement:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/enclosing_rl"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:background="@drawable/background"
Android:fitsSystemWindows="false">
<!-- Other elements -->
</RelativeLayout>
À part transformer votre image en un neuf patch, je ne pense pas que ce soit possible. Au lieu de cela, vous pouvez ajouter un ImageView en tant que première vue de votre RelativeLayout. Définissez layout_centerInParent sur true et réglez les paramètres layout_width et layout_height sur match_parent. Puis définissez scaleType sur centerCrop. Cela garantira que l’image occupe l’écran sans aucune distorsion, mais en fonction de la taille/de l’orientation de l’écran, une partie du haut/bas ou de la gauche/droite de l’image peut être coupée.
<ImageView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_centerInParent="true"
Android:scaleType="centerCrop"
Android:src="@drawable/background" />
Toute autre vue de RelativeLayout apparaîtra au-dessus de ImageView, à condition qu'il s'agisse de la première vue de RelativeLayout (lorsque vous êtes dans le xml).
Créez une ressource XML dessinable en bitmap dans votre dossier res/drawable:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:src="@drawable/background"
Android:tileMode="repeat" />
Utilisez ce dessin comme fond à la place de @ dessin/fond
selon cette réponse Si vous voulez que votre ImageView
remplisse votre RelativeLayout
, utilisez les paramètres align
pour ImageView
.
vous pouvez placer toutes vos vues dans une variable LinearLayout
et définir le paramètre align
sur votre arrière-plan ImageView
:
<RelativeLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content" >
<ImageView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:src="@drawable/my_background"
Android:scaleType="centerCrop"
Android:layout_alignTop="@+id/my_views"
Android:layout_alignBottom="@+id/my_views"
/>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/my_views"
Android:orientation="vertical" >
<!-- stuff -->
</LinearLayout>
</RelativeLayout>
Sa réponse intelligente et efficace consiste à définir la propriété scaleType of image view!
Android:scaleType="fitCenter"