我使用位图裁剪图像。现在我可以在图像上绘制文字,但我希望它在相同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" />
任何帮助将不胜感激。谢谢
答案 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);