在 Android 中,我有一个 TextView,它的内容是动态的。我想在每行文本之后显示一条水平线。我搜索了很多并找到了 EditText(如何在 Android 中使用规则/水平线对齐 EditText 中的文本?)。我打算在它们下面绘制动态 TextView 和一条水平线。但我不知道如何检测行尾。任何帮助将不胜感激。我希望与如何使用规则/水平线对齐 Android 中 EditText 中的文本的附加图像具有相同的效果?
问问题
6120 次
3 回答
8
我正在使用在EditText中的每一行文本之间绘制线条的技术,然后我将通过将setKeyListener(null)设置为自定义 EditText 对象来使EditText不可编辑,这样 EditText 就像TextView :)
一个自定义的 EditText,它在显示的每行文本之间画线:
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.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);
}
}
现在在需要TextView的地方使用LinedEditText类的对象并使其不可编辑。
一个例子:
public class HorizontalLine extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("Android: Ruled/horizonal lines in Textview");
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
LayoutParams textViewLayoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
LinedEditText et = new LinedEditText(this, null);
et.setText("The name of our country is Bangladesh. I am proud of my country :)");
et.setLayoutParams(textViewLayoutParams);
et.setKeyListener(null);
ll.addView(et);
this.setContentView(ll);
}
}
et.setKeyListener(null)使 EditText 不可编辑,因此它就像一个 TextView。
输出:
光标问题:
如果您仅使用et.setKeyListener(null),那么它只是不听键,但用户可以在 EditText 上看到光标。如果您不想要此光标,只需添加以下行即可禁用 EditText:
et.setEnabled(false);
于 2012-05-26T23:40:43.783 回答
1
您可以使用视图绘制线:对于水平线:
<View
android:layout_height="1dp"
android:layout_width="fill_parent"
android:background="#ffffff" />
于 2012-05-25T04:51:12.357 回答
0
<TextView
android:layout_height="1dp"
android:layout_width="fill_parent"/>
于 2012-05-25T04:39:35.563 回答