如何在android中以编程方式在EditText上添加边框

如何在android中以编程方式在EditText上添加边框,android,xml,Android,Xml,我只是在演示应用程序上工作,我需要通过编程设置边框宽度和边框颜色 我知道这可以使用xml drawable来完成,但我想在运行时完成所有这些。我知道通过创建xml并使用它来实现这些功能是很好的,但我的需求是动态的,所以我必须在运行时完成所有这些工作,而不是采用下面的方法 border_edittext.xml <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"

我只是在演示应用程序上工作,我需要通过编程设置边框宽度和边框颜色

我知道这可以使用xml drawable来完成,但我想在运行时完成所有这些。我知道通过创建xml并使用它来实现这些功能是很好的,但我的需求是动态的,所以我必须在运行时完成所有这些工作,而不是采用下面的方法

border_edittext.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <solid android:color="#ffffff" />
    <stroke android:width="1dip" android:color="#000000"/>
</shape>

提前感谢。

首先想到的是形状可拉丝。政府对此有一些很好的细节

    int x = 10;
    int y = 10;
    int width = 300;
    int height = 50;

    mDrawable = new ShapeDrawable(new RectShape()); // rectangle for border
    mDrawable.getPaint().setColor(0xff74AC23); // set color
    mDrawable.setBounds(x, y, x + width, y + height);   

    setContentView(mDrawable);
但这不会是一个空心矩形,因为你可能会想要一个边框。有关使用边框的详细讨论,请参见。棘手的部分是获得透明度。看起来有些人已经习惯于在画布的边缘画四条线

画布可以这样创建

Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);

您可能需要创建自定义视图并使用onDraw方法来执行此操作,或者动态创建一个比EditText宽/高2dp的相对布局,将EditText的边距设置为1,并将编辑文本放入容器中,将规则添加到父级的中心。用这个link@zgc7009我不太了解如何编写自定义视图。你能在
onDraw
中提示我必须覆盖的内容吗?onDraw会逐字地绘制你的视图。它基本上会给你一张空白画布,你必须确定画的是什么。不过这里似乎有点过分了。它可能比@piyush链接更深入,尽管我并没有完全阅读该链接。您希望以编程方式完成它有什么原因吗?@zgc7009是的,因为我将从web服务获取这些数据,然后相应地放大布局。如果您能提供帮助,我将不胜感激。我尝试了上面的代码
mDrawable=new ShapeDrawable(new RectShape());/边框的矩形mDrawable.getPaint().setColor(0xff74AC23);//设置颜色mDrawable.setBounds(x,y,x+宽度,y+高度)但这使我的edittext颜色完全变为黑色。我只想要边界。你能帮助我如何设置画布并帮助实现这一点吗?我很害怕。您可以围绕边框制作四个线型,而不是矩形。或者你可以尝试制作一个边框的图像,并根据需要进行拉伸。对不起,我以前从来没有做过这种事情。+1嗯,看来你的答案接近我的要求。谢谢你的帮助。
Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);