我正在创建一个显示通知编号的Imagebutton。这是我的示例图片:
我的目标是在图像中的特定黑色圆圈上写一个数字(1,2 ..)。我尝试过RelativeLayout和FrameLayout,但不认为这是实现结果的可靠方法。原因是边缘,填充将根据不同的设备大小而有所不同。
有什么建议吗?
答案 0 :(得分:2)
你走了:
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/pencil">
<TextView
android:id="@+id/circle"
android:layout_width="22dp"
android:layout_height="22dp"
android:background="@drawable/circle"
android:gravity="center"
android:text="2"
android:layout_gravity="bottom|right"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
android:textColor="#FFFFFF"
android:textSize="12sp" />
</FrameLayout>
图片:
输出:
答案 1 :(得分:0)
您可以创建一个从ImageView扩展的自定义View类。您必须覆盖onDraw方法并执行以下操作:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// Calculate x and y positions and set up a Paint instance with correct color/size
canvas.drawText(String.valueOf(myNumber), x, y, myPaint);
}
答案 2 :(得分:0)
尝试将背景设置为图像的Textview
<TextView
android:id="@+id/img"
android:layout_width="45sp"
android:layout_height="45sp"
android:background="@drawable/circle"
android:gravity="center"
android:text="r"
/>
使用重力将图像内的文本对齐。
答案 3 :(得分:0)
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="bottom|right"
android:paddingRight="20dp"
android:paddingBottom="15dp"
android:textColor="@android:color/white"
android:background="@drawable/text"
android:text="1" />
答案 4 :(得分:0)
try this code
Bitmap bitmap = ... // Load your bitmap here
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(10);
canvas.drawText("Some Text here", x, y, paint);