Размещение textview поверх imageview в android
- у меня есть
listview, у которого есть одинimageview, который
прокручивается вертикально - я пытаюсь поместить
textviewПоверх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>
Это дает выход, как показано ниже

Как сделать что-то вроде ниже

Примечание:: Dish 1 & 2-это текстовые представления
7 ответов:
Это должно дать вам необходимую компоновку:
<?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>Поиграйте с
android:layout_marginTop="20dp", чтобы увидеть, какой из них вам больше подходит. Используйте идентификаторtextviewдля динамического задания значенияandroid:text.Поскольку RelativeLayout складывает свои дочерние элементы, определение TextView после ImageView помещает его "поверх" ImageView.
Примечание: аналогичные результаты можно получить, используя
FrameLayoutв качестве родителя, наряду с повышением эффективности по сравнению с использованием любого другого контейнера android. СПАСИБОIgor Ganapolsky(см. комментарий ниже) за указывая, что этот ответ нуждается в обновлении.
Попробуйте это:
<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" />
Надеюсь, это поможет вам.
Для этого можно использовать framelayout.
Как использовать 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
Просто перетащите TextView поверх ImageView в 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>И этот вывод выше xml
Как вы упомянули в OP, вам нужно наложить
TextнаImageViewпрограммно. Вы можете получитьImageViewрисование и писать на нем с помощью надевания его наCanvasи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); }
Вы можете попробовать и это. Я использую просто так.
<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>
Может быть, вам следует сначала написать ImageView, а затем TextView. Иногда это может помочь. Это просто, но я надеюсь, что это кому-то поможет. :)

Comments