Как сделать EditText жирным курсивом подчеркивание android

Я работаю с EditText для поддержки свойств жирного шрифта, курсива и подчеркивания. Я добился успеха после того, как выделил текст и нажал кнопку, чтобы выделить мой текст полужирным шрифтом.

Теперь я хочу снова удалить полужирный шрифт после выделения текста и нажатия на полужирную кнопку.

Это просто не установка флага, чтобы сделать жирный шрифт и удалить жирный шрифт. Я должен знать, что текст, который мы выбрали, выделен жирным шрифтом, и если он выделен жирным шрифтом, мы должны удалить жирный шрифт, нажав ту же кнопку. Требуется поддержка этого текстового редактора начиная с версии 2.3.

Любая помощь будет принята с благодарностью. Спасибо:)


person user    schedule 28.10.2013    source источник


Ответы (1)


Приведенный ниже код предлагает начало понимания того, как расширить класс EditText. Этот код рисует линию под каждой строкой слов. Однако это не предлагает rtf.

public class LinedEditText extends EditText {
    private Rect mRect;
    private Paint mPaint;

    // we need this constructor for LayoutInflater
    public LinedEditText(Context context, AttributeSet attrs) {
        super(context, attrs);

        mRect = new Rect();
        mPaint = new Paint();
        mPaint.setStyle(Paint.Style.FILL_AND_STROKE);

        // set your own color here, referencing color resource file
        int color = ContextCompat.getColor(context, R.color.edit_note_line);
        mPaint.setColor(color);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        //int count = getLineCount();

        int height = getHeight();
        int line_height = getLineHeight();

        int count = height / line_height;

        if (getLineCount() > count)
            count = getLineCount();//for long text with scrolling

        Rect r = mRect;
        Paint paint = mPaint;
        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);
    }
}
person Harshit Rathi    schedule 28.10.2013