Saya memiliki imageView dengan gambar, di atas gambar itu saya ingin menempatkan teks. Bagaimana saya bisa mencapai itu?
Saya memiliki imageView dengan gambar, di atas gambar itu saya ingin menempatkan teks. Bagaimana saya bisa mencapai itu?
Jawaban:
Begitulah cara saya melakukannya dan berfungsi persis seperti yang Anda minta di dalam RelativeLayout:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativelayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/myImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/myImageSouce" />
<TextView
android:id="@+id/myImageViewText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/myImageView"
android:layout_alignTop="@id/myImageView"
android:layout_alignRight="@id/myImageView"
android:layout_alignBottom="@id/myImageView"
android:layout_margin="1dp"
android:gravity="center"
android:text="Hello"
android:textColor="#000000" />
</RelativeLayout>
Anda mungkin ingin mengambilnya dari sisi yang berbeda: Tampaknya lebih mudah untuk memiliki TextView dengan drawable di latar belakang:
<TextView
android:id="@+id/text"
android:background="@drawable/rounded_rectangle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
</TextView>
Anda mungkin bisa
onDraw
. Panggil super.onDraw()
metode itu terlebih dahulu danjika Anda melakukannya dengan cara itu, Anda dapat menggunakan ini sebagai Komponen Tata Letak tunggal yang membuatnya lebih mudah untuk membuat tata letak bersama dengan komponen lainnya.
Anda ingin menggunakan FrameLayout atau tata letak Merge untuk mencapai ini. Panduan pengembang Android memiliki contoh yang bagus untuk ini: Trik Tata Letak Android # 3: Optimalkan dengan menggabungkan .
Ada banyak cara. Anda menggunakan RelativeLayout atau AbsoluteLayout.
Dengan relative, Anda dapat membuat gambar sejajar dengan induk di sisi kiri misalnya dan juga memiliki teks yang sejajar dengan induk kiri juga ... maka Anda dapat menggunakan margin dan padding dan gravitasi pada tampilan teks untuk membuatnya berjajar di mana Anda ingin di atas gambar.
Anda dapat menggunakan TextView dan mengubah latar belakangnya menjadi gambar yang ingin Anda gunakan
Untuk ini, Anda hanya dapat menggunakan satu TextView dengan android:drawableLeft/Right/Top/Bottom
untuk memposisikan Gambar ke TextView. Selanjutnya Anda bisa menggunakan beberapa padding antara TextView dan drawable denganandroid:drawablePadding=""
Gunakan seperti ini:
<TextView
android:id="@+id/textAndImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableBottom="@drawable/yourDrawable"
android:drawablePadding="10dp"
android:text="Look at the drawable below"/>
Dengan ini, Anda tidak memerlukan ImageView tambahan. Ini juga memungkinkan untuk menggunakan dua drawable di lebih dari satu sisi TextView.
Satu-satunya masalah yang akan Anda hadapi dengan menggunakan ini, adalah drawable tidak dapat diskalakan dengan cara ImageView.
Coba kode di bawah ini, ini akan membantu Anda`
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="150dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/gallery1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#7ad7d7d7"
android:gravity="center"
android:text="Juneja Art Gallery"
android:textColor="#000000"
android:textSize="15sp"/>
</RelativeLayout>
Kode di bawah ini akan membantu Anda
public class TextProperty {
private int heigt; //读入文本的行数
private String []context = new String[1024]; //存储读入的文本
/*
*@parameter wordNum
*
*/
public TextProperty(int wordNum ,InputStreamReader in) throws Exception {
int i=0;
BufferedReader br = new BufferedReader(in);
String s;
while((s=br.readLine())!=null){
if(s.length()>wordNum){
int k=0;
while(k+wordNum<=s.length()){
context[i++] = s.substring(k, k+wordNum);
k=k+wordNum;
}
context[i++] = s.substring(k,s.length());
}
else{
context[i++]=s;
}
}
this.heigt = i;
in.close();
br.close();
}
public int getHeigt() {
return heigt;
}
public String[] getContext() {
return context;
}
}
public class MainActivity extends AppCompatActivity {
private Button btn;
private ImageView iv;
private final int WORDNUM = 35; //转化成图片时 每行显示的字数
private final int WIDTH = 450; //设置图片的宽度
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView) findViewById(R.id.imageView);
btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int x=5,y=10;
try {
TextProperty tp = new TextProperty(WORDNUM, new InputStreamReader(getResources().getAssets().open("1.txt")));
Bitmap bitmap = Bitmap.createBitmap(WIDTH, 20*tp.getHeigt(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setTextAlign(Paint.Align.LEFT);
paint.setTextSize(20f);
String [] ss = tp.getContext();
for(int i=0;i<tp.getHeigt();i++){
canvas.drawText(ss[i], x, y, paint);
y=y+20;
}
canvas.save(Canvas.ALL_SAVE_FLAG);
canvas.restore();
String path = Environment.getExternalStorageDirectory() + "/image.png";
System.out.println(path);
FileOutputStream os = new FileOutputStream(new File(path));
bitmap.compress(Bitmap.CompressFormat.PNG, 100, os);
//Display the image on ImageView.
iv.setImageBitmap(bitmap);
iv.setBackgroundColor(Color.BLUE);
os.flush();
os.close();
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}```