如何将Android应用程序中的TextView Style更改为我喜欢的任何设计?
用于消息传递:在气球内显示消息(如在iPhone inBox中)。
谢谢,
答案 0 :(得分:3)
您可以在XML中更改textview的background属性,也可以通过编程方式执行此操作。使用9-patch工具创建背景图像。所以,图像拉伸不会出现问题。
还有一个选项是在资源文件夹中创建一个XML,如下所示,您可以对图像进行大量更改(渐变,角落,填充等)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<gradient android:startColor="#FF00FF" android:endColor="#FFFF00"
android:angle="270"/>
<solid android:color="#00000000"/>
<stroke android:width="1dp" android:color="@color/round_rect_shape_border"/>
<padding android:left="7dp" android:top="7dp"
android:right="7dp" android:bottom="7dp" />
<corners android:radius="8dp" />
</shape>
使用它作为Textview的背景。
答案 1 :(得分:2)
回答你的问题不仅适用于textview
,还适用于android中的其他view
。
您将需要一个新的自我类,扩展您需要更改样式的视图。
例如:
public class NewTextView extends TextView{
public NewTextView(){} //just constructor
@Override
public void onDraw(Canvas canvas){
//this is a main method that do your work.
//for example, you will draw a `baloon` like iPhone
}
这是一个示例代码,在EditText
的每一行中绘制一条直线(就像您在纸上打字一样)。你可以看到这段代码,并学会这样做。
再说一遍:要做到这一点,你应该对android(Canvas或OpenGL)中的绘图有一些了解。
public class EditTextExtra extends EditText {
private Rect Rect;
private Paint Paint;
public EditTextExtra (Context context, AttributeSet attrs) {
super(context, attrs);
Rect = new Rect();
Paint = new Paint();
Paint.setStyle(Paint.Style.FILL_AND_STROKE);
Paint.setColor(Color.BLACK);
}
@Override
protected void onDraw(Canvas canvas) {
int count = getHeight()/getLineHeight();
if(getLineCount() > count){
count = getLineCount(); // for long text with scrolling
}
Rect r = Rect;
Paint paint = Paint;
int baseline = getLineBounds(0, r); // first line
for (int i = 0; i < count; i++) {
canvas.drawLine(r.left, baseline + 1, r.right, baseline + 1, paint);
baseline += getLineHeight(); // next line
}
super.onDraw(canvas);
}
}