Android 以编程方式创建自定义TextView

Android 以编程方式创建自定义TextView,android,textview,Android,Textview,我正在写一个聊天应用程序。我正在用代码为每个聊天创建文本视图。这涉及到“addChat”方法和粘贴在下面的chatshape.xml。除了文本框上的角不是圆的以外,所有这些都可以完美地工作。tv.setBackgroundResource(R.drawable.chatshape)无效 private void addChat(String chat, String when, Boolean mine) { int leftMargin; TextView tv = new

我正在写一个聊天应用程序。我正在用代码为每个聊天创建文本视图。这涉及到“addChat”方法和粘贴在下面的chatshape.xml。除了文本框上的角不是圆的以外,所有这些都可以完美地工作。tv.setBackgroundResource(R.drawable.chatshape)无效

private void addChat(String chat, String when,  Boolean mine) 
{
    int leftMargin;
    TextView tv = new TextView(this);
    tv.setLayoutParams(new ViewGroup.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.MATCH_PARENT)); 

    tv.setTextSize(2,20);
    tv.setPadding(10, 4, 10, 4);
    tv.setBackgroundResource(R.drawable.chatshape);
    tv.setText(chat);
    if (mine) {
        leftMargin = 10;
        tv.setBackgroundResource(R.color.white);
        tv.setTextColor(Color.BLUE);
    }
    else {
        leftMargin = 25;
        tv.setBackgroundResource(R.color.gray);
        tv.setTextColor(Color.WHITE);
    }
    this.messageScroll.addView(tv);
    final ViewGroup.MarginLayoutParams lpt = (ViewGroup.MarginLayoutParams) tv.getLayoutParams();

    lpt.setMargins(leftMargin,4,10,4);

}

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

  <corners
         android:bottomRightRadius="20px" 
         android:bottomLeftRadius="20px" 
         android:topLeftRadius="20px" 
         android:topRightRadius="20px"/>
</shape>
private void addChat(字符串聊天、字符串时间、布尔值)
{
int左边距;
TextView tv=新的TextView(此);
tv.setLayoutParams(新建ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_内容,
ViewGroup.LayoutParams.MATCH_PARENT);
tv.setTextSize(2,20);
设置填充(10,4,10,4);
tv.setBackgroundResource(R.drawable.chatshape);
tv.setText(聊天);
如果(我的){
leftMargin=10;
tv.setBackgroundResource(R.color.white);
tv.setTextColor(Color.BLUE);
}
否则{
leftMargin=25;
tv.setBackgroundResource(R.color.gray);
电视.彩色(彩色.白色);
}
this.messageScroll.addView(电视);
final ViewGroup.marginlayoutparms lpt=(ViewGroup.marginlayoutparms)tv.getlayoutparms();
lpt.setMargins(leftMargin,4,10,4);
}



它有效

你试过9个补丁吗?不,我从没听说过。它真的很棒!!谢谢你的提示。VegeOSplash:我给了你怀疑的好处,并将此标记为答案,但在了解9Patch之后,我甚至不打算尝试。对于自定义形状和背景来说,这似乎是一个更好的解决方案。当然!。9补丁是圆角的一个很好的解决方案,因为它可以在所有设备上工作,不会产生任何失真。Android本身会根据用户设备屏幕分辨率和DPI来调整边缘的大小
<corners android:radius="8dp" />

<solid android:color="#FFFFFF" />

<stroke
    android:width="1dp"
    android:color="#848482" />

  <padding
    android:bottom="3dp"
    android:left="3dp"
    android:right="3dp"
    android:top="3dp" />