2010-11-06 11 views

Répondre

8

Ce genre de chose est fait dans l'exemple de démo Notepad. Si nous regardons le editor source, nous pouvons voir qu'ils utilisent un éditeur de texte personnalisé, comme ceci:

/** 
* A custom EditText that draws lines between each line of text that is displayed. 
*/ 
public static 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.STROKE); 
     mPaint.setColor(0x800000FF); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     int count = getLineCount(); 
     Rect r = mRect; 
     Paint paint = mPaint; 

     for (int i = 0; i < count; i++) { 
      int baseline = getLineBounds(i, r); 

      canvas.drawLine(r.left, baseline + 1, r.right, baseline + 1, paint); 
     } 

     super.onDraw(canvas); 
    } 
} 

qu'ils formuleront ensuite de cette façon dans le layout:

<view xmlns:android="http://schemas.android.com/apk/res/android" 
    class="com.example.android.notepad.NoteEditor$LinedEditText" 
    android:id="@+id/note" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@android:color/transparent" 
    android:padding="5dp" 
    android:scrollbars="vertical" 
    android:fadingEdge="vertical" 
    android:gravity="top" 
    android:textSize="22sp" 
    android:capitalize="sentences" /> 
+0

très bon ... fonctionne parfaitement ... Merci pour l'aide – Noman

+0

Comment puis-je obtenir le texte écrit sur cette vue? – Noman