0

我的应用程序中有一个按钮,我在其中设置它的背景: setBackground(Drawable background)

然后我使用 setText(CharSequence,TextView.BufferType) 在底部显示文本。

现在的问题是我试图在文本上加上圆形背景。我正在查看按钮的 android 文档,但找不到任何有用的功能来为按钮的文本放置背景。

为了更清楚: 图片

我正在尝试获得黄色部分。任何帮助/建议将不胜感激。谢谢!

编辑:要清楚红色形状是按钮本身。黄色的形状是我想要的按钮文本周围的背景。

4

3 回答 3

0

您可以将XML其用作按钮的自定义背景,以根据需要为其提供样式,例如

round_button_file

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#6F2500"/>
<stroke android:width="2sp" android:color="#fff" />

然后将按钮的背景设置为该 XML 文件

code for button

<Button
android:layout_width="30sp"
android:layout_height="30sp"
android:background="@drawable/round_button_file"
android:gravity="center_vertical|center_horizontal"
android:text="Text"
android:textColor="#fff" />

希望我有所帮助。

于 2013-10-31T21:30:52.647 回答
0

尝试这个:

椭圆背景.xml

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval" >
        <solid android:color="#FFFF00"/>

</shape>  

椭圆文本.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:orientation="vertical" >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:paddingLeft="30dp"
    android:paddingRight="30dp"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:layout_margin="10dp"

    android:gravity="center_vertical|center_horizontal"
    android:background="@drawable/oval_background"
    android:text="TEXT"/>
</LinearLayout>
于 2013-10-31T22:01:57.650 回答
0

我知道这是一篇旧帖子,但我认为它在这里很有帮助。不要使用可绘制对象,而是尝试扩展按钮并在画布上绘制椭圆。

开始:

public class YourButton extends Button {

    //declare needed variables
    private Context context;
    private Paint ovalPaint;

    public YourButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    private void init(Context context) {
        this.context = context;
        ovalPaint = new Paint();
        ovalPaint.setAntiAlias(true);
        ovalPaint.setStyle(Paint.Style.FILL);
        ovalPaint.setColor(context.getResources().getColor(R.color.YOUR_RED_COLOR);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawOval(getOval(canvas), ovalPaint);
        super.onDraw(canvas); //important
    }

    private RectF getOval(Canvas canvas) {
        int offset = (int)(canvas.getWidth() * .05);
        return new RectF(0 + offset, 0 + offset, canvas.getWidth() - offset, canvas.getHeight() -           offset);
    }
}

并将您的 xml 文件设置如下:

<YourButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="Text"
    android:textSize="30sp"
    android:textColor="#fff" />
于 2014-11-05T19:33:24.683 回答