我想在imageview中放置一个文本和图像

时间:2014-04-07 09:57:15

标签: android imageview

我使用位图裁剪图像。现在我可以在图像上绘制文字,但我希望它在相同imageview的图像下面。我见过一些使用图像下方的textview,但我的要求是将文本和图像放在单个imageview中。

我的主要课程:

public class MainActivity extends Activity {

static ImageView imageView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imageView=(ImageView)findViewById(R.id.imageView1);

    Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.images_1);        
    imageView.setImageBitmap(getCircleBitmap(bitmap));

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}


public static Bitmap getCircleBitmap(Bitmap bitmap) {

    //crop to circle 
    Bitmap output;
    //check if its a rectangular image
    if (bitmap.getWidth() > bitmap.getHeight()) {
        output = Bitmap.createBitmap(bitmap.getHeight(), bitmap.getHeight(), Config.ARGB_8888);
    } else {
        output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getWidth(), Config.ARGB_8888);
    }
    Canvas canvas = new Canvas(output);

    float r = 0;

    if (bitmap.getWidth() > bitmap.getHeight()) {
        r = bitmap.getHeight() / 2;
    } else {
        r = bitmap.getWidth() / 2;
    }

    final Paint paint = new Paint();
    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());

    paint.setColor(Color.WHITE);

    paint.setAntiAlias(true);
    canvas.drawARGB(0, 0, 0, 0);

    canvas.drawCircle(r, r, r, paint);
    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
    canvas.drawBitmap(bitmap, rect, rect, paint);

    Rect bounds = new Rect();
    int x = (bitmap.getWidth() - bounds.width())/2;
    int y = (bitmap.getHeight() + bounds.height())/2; 

    canvas.drawText("hii",x,y, paint);

    return output;
}
我的xml文件中的

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView1"
    android:layout_below="@+id/textView1"
    android:layout_marginLeft="26dp"
    android:layout_marginTop="52dp"
    android:src="@drawable/image" />

任何帮助将不胜感激。谢谢

4 个答案:

答案 0 :(得分:1)

一种安全的方法是创建您的图片并在其下添加文字(例如在Photoshop中),然后将其保存为png并使用它。它不会占用太多空间,你可以拥有自己的字体样式等。 但是之前的答案很好,您也可以使用它们

答案 1 :(得分:0)

你可以尝试如下:

<?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>

由于RealativeLayout堆叠其子节点,因此在ImageView将其置于ImageView之后定义TextView。

答案 2 :(得分:0)

只有一个建议。 而是在图像视图中添加文本,将图像添加到文本视图。 如果您可以查看textview的以下几个属性,我想您可能会找到一些出路。

        android:drawableTop=""
        android:drawableBottom=""
        android:drawableLeft=""
        android:drawableRight=""
        android:drawableStart=""
        android:drawableEnd=""
        android:drawablePadding=""

答案 3 :(得分:0)

使用Image View在XML中获取一个TextView,并在java文件中访问它们并将其设置为

TextView.setText(yourtext);
imageview.setImageBitmap(yourbitmapobject);