Изменение приложений Android в стиле TextView

Как изменить стиль TextView в приложении Android для любого дизайна, который я предпочитаю?

для exmaple в обмене сообщениями: показать сообщение внутри воздушного шара (например, в iPhone inBox).

благодаря,

2 ответа

Ответ на ваш вопрос не только применим для textview но и для другого view в android.

Вам понадобится новый класс self-self, который расширит представление, которое вам нужно изменить.

например:

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);
 }
}


Вы можете изменить фоновый атрибут textview в XML или программно вы можете это сделать. Используйте инструмент 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">
 </padding></stroke></solid></gradient></shape>

используйте это как фон Textview.

licensed under cc by-sa 3.0 with attribution.