Изменение приложений Android в стиле TextView - PullRequest
1 голос
/ 21 марта 2012

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

для примера в сообщениях: чтобы показать сообщение внутри всплывающей подсказки (как в iPhone inBox).

спасибо,

Ответы [ 2 ]

3 голосов
/ 21 марта 2012

Вы можете изменить фоновый атрибут 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" />
    <corners android:radius="8dp" />
</shape>

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

2 голосов
/ 21 марта 2012

Ответьте на свой вопрос не только верно для textview, но и для других view в Android.

Вам понадобится новый класс your-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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...