gpt4 book ai didi

java - 如何使用规则/水平线对齐 Android 中 EditText 中的文本?

转载 作者:搜寻专家 更新时间:2023-11-01 08:12:21 29 4
gpt4 key购买 nike

基本上我想在 Android 中做这样的事情:

enter image description here

我试图在自定义 EditText 中绘制水平线,然后在这些线上打字。

我使用文本大小作为两条水平线之间的距离。但是,光标的大小与文本的大小不同。因此,我无法保持将文本“放在”这些行上。

文本底部与这些水平线的对齐方式不正确。

这是用于绘制线条的代码:-

float textSize = getTextSize());
Paint paint = new Paint();
for (int i = 0; i < 50; i++) {
canvas.drawLine(0, textSize * i, getWidth(), textSize * i, paint);
}

EditText 不提供任何获取光标大小的方法。

如果有任何解决方法或任何其他更好的方法,请提出建议。

最佳答案

在显示的每行文本之间绘制线条的自定义 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);
}
}

现在在您需要的地方使用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);

ll.addView(et);
this.setContentView(ll);

}

}

输出:

enter image description here

关于java - 如何使用规则/水平线对齐 Android 中 EditText 中的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8667506/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com