android關於實現EditText中加多行下劃線的的一種方法
1. 重寫EditText
public class LinedEditText extends EditText { private Paint linePaint; private float margin; private int paperColor; public LinedEditText(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); this.linePaint = new Paint(); } protected void onDraw(Canvas paramCanvas) { paramCanvas.drawColor(this.paperColor); int i = getLineCount(); int j = getHeight(); int k = getLineHeight(); int m = 1 + j / k; if (i < m) i = m; int n = getCompoundPaddingTop(); paramCanvas.drawLine(0.0F, n, getRight(), n, this.linePaint); for (int i2 = 0;; i2++) { if (i2 >= i) { setPadding(10 + (int) this.margin, 0, 0, 0); super.onDraw(paramCanvas); paramCanvas.restore(); return; } n += k; paramCanvas.drawLine(0.0F, n, getRight(), n, this.linePaint); paramCanvas.save(); } } }
這段代碼,並不複雜沒有加注釋,學過Java的同學應該不會吃力。
2.在布局文件中使用
<LinearLayout xmlns:andro xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <com.example.storetest.LinedEditText android: android:layout_width="fill_parent" android:layout_height="200dp" android:gravity="top" android:inputType="textMultiLine" /> </LinearLayout>
注意:使用EditText控件時,不再使用EditText前綴,而是重寫之後完整路徑的包名+類名(如com.example.storetest.LinedEditText)。
3.在使用時與正常調用EditText時一致。
最後更新:2017-04-02 15:15:07