listview
, qui a une seule imageview
qui fait défiler.textview
sur Imageview
list_view_item_for_images.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent" >
<ImageView
Android:id="@+id/flag"
Android:layout_width="fill_parent"
Android:layout_height="250dp"
Android:layout_alignParentLeft="true"
Android:layout_alignParentRight="true"
Android:scaleType="fitXY"
Android:src="@drawable/ic_launcher" />
</RelativeLayout>
Il donne une sortie comme ci-dessous
Comment faire quelque chose comme ci-dessous
note :: Dish 1 & 2 sont des textviews
Cela devrait vous donner la mise en page requise:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent" >
<ImageView
Android:id="@+id/flag"
Android:layout_width="fill_parent"
Android:layout_height="250dp"
Android:layout_alignParentLeft="true"
Android:layout_alignParentRight="true"
Android:scaleType="fitXY"
Android:src="@drawable/ic_launcher" />
<TextView
Android:id="@+id/textview"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentTop="true"
Android:layout_marginTop="20dp"
Android:layout_centerHorizontal="true" />
</RelativeLayout>
Jouez avec le Android:layout_marginTop="20dp"
pour voir celui qui vous convient le mieux. Utilisez l'ID textview
pour définir de manière dynamique la valeur Android:text
.
Etant donné que RelativeLayout empile ses enfants, définir TextView après qu'ImageView le place "sur" ImageView.
REMARQUE: Des résultats similaires peuvent être obtenus en utilisant une variable FrameLayout
comme parent, ainsi qu'un gain d'efficacité par rapport à l'utilisation de tout autre conteneur Android. Merci à Igor Ganapolsky
(voir commentaire ci-dessous) pour avoir signalé que cette réponse nécessite une mise à jour.
Essaye ça:
<RelativeLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/rel_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >
<ImageView
Android:id="@+id/ImageView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src=//source of image />
<TextView
Android:id="@+id/ImageViewText"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignLeft="@id/ImageView"
Android:layout_alignTop="@id/ImageView"
Android:layout_alignRight="@id/ImageView"
Android:layout_alignBottom="@id/ImageView"
Android:text=//u r text here
Android:gravity="center"
/>
J'espère que cela pourrait vous aider.
vous pouvez utiliser framelayout pour y parvenir.
comment utiliser framelayout
<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<ImageView
Android:src="@drawable/ic_launcher"
Android:scaleType="fitCenter"
Android:layout_height="250px"
Android:layout_width="250px"/>
<TextView
Android:text="Frame Demo"
Android:textSize="30px"
Android:textStyle="bold"
Android:layout_height="fill_parent"
Android:layout_width="fill_parent"
Android:gravity="center"/>
</FrameLayout>
ref: tutorialspoint
vous pouvez essayer cela aussi. J'utilise juste framelayout.
<FrameLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/cover"
Android:gravity="bottom">
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textAppearance="?android:attr/textAppearanceMedium"
Android:text="Hello !"
Android:id="@+id/welcomeTV"
Android:textColor="@color/textColor"
Android:layout_gravity="left|bottom" />
</FrameLayout>
glissez et déposez le TextView sur ImageView dans Eclipse
<RelativeLayout 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"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ImageView
Android:id="@+id/imageView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_alignParentTop="true"
Android:layout_marginLeft="48dp"
Android:layout_marginTop="114dp"
Android:src="@drawable/bluehills" />
<TextView
Android:id="@+id/textView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignLeft="@+id/imageView1"
Android:layout_centerVertical="true"
Android:layout_marginLeft="85dp"
Android:text="TextView" />
</RelativeLayout>
Et cela la sortie du XML ci-dessus
Comme vous l'avez mentionné dans OP, vous devez superposer Text
sur ImageView
de manière programmée. Vous pouvez obtenir ImageView
et écrire dessus avec l’aide de le mettre sur Canvas
et Paint
.
private BitmapDrawable writeTextOnDrawable(int drawableId, String text)
{
Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId).copy(Bitmap.Config.ARGB_8888, true);
Typeface tf = Typeface.create("Helvetica", Typeface.BOLD);
Paint paint = new Paint();
Paint.setStyle(Style.FILL);
Paint.setColor(Color.WHITE);
Paint.setTypeface(tf);
Paint.setTextAlign(Align.CENTER);
Paint.setTextSize(11);
Rect textRect = new Rect();
Paint.getTextBounds(text, 0, text.length(), textRect);
Canvas canvas = new Canvas(bm);
canvas.drawText(text, xPos, yPos, Paint);
return new BitmapDrawable(getResources(), bm);
}