【发布时间】:2014-03-04 13:24:21
【问题描述】:
我想创建一个填空活动。
例子:
“昨天的天气是(在此处编辑文本)。”
“男孩们在课间玩耍(在此处编辑文本)。”
“Lucy 昨天午餐时喝了酒(在此处编辑文本)。”
按照我现在的设置方式,我在编辑文本之前和之后都有一个文本视图。问题是文本视图的文本是由从意图发送的 putStringExtra 方法设置的。我永远不知道这两种观点的文字会持续多久。如果文本太长,那么第二个视图的文本最后会被挤成一团。也就是说,文本在第二个文本视图上换行。我想要实现的是环绕整个屏幕的文本。目前,我正在检查第二个文本视图的行数。如果有多个,那么我将该文本放在第一个布局下方的布局中的 textview 中。似乎有一种更简单的方法可以做到这一点。这是我的代码,感谢您的帮助:
public void setText(double w, double t) {
final double HalfScreenWidth = w;
final double totalScreenWidth = t;
TextView1.setText(getIntent().getExtras().getString("SentPart1"));
TextView2.setText(getIntent().getExtras().getString("SentPart2"));
TextView3.setText("");
TextView1.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
tVWidth = TextView1.getMeasuredWidth();
if (totalScreenWidth > 1100) {
linLay1.removeAllViews();
linLay2.removeAllViews();
linLay1.addView(TextView1);
linLay1.addView(EditText);
linLay1.addView(TextView2);
linLay1.addView(TextView3);
} else if (tVWidth > HalfscreenWidth && totalScreenWidth < 1100) {
linLay1.removeAllViews();
linLay2.removeAllViews();
linLay1.addView(TextView1);
linLay1.addView(EditText);
linLay2.addView(TextView2);
} else if (tVWidth < HalfScreenWidth && totalScreenWidth < 1100) {
linLay1.removeAllViews();
linLay2.removeAllViews();
linLay1.setVisibility(View.INVISIBLE);
linLay2.setVisibility(View.INVISIBLE);
linLay1.addView(TextView1);
linLay1.addView(EditText);
linLay1.addView(TextView2);
linLay2.addView(TextView3);
h.postDelayed(r, 100);
}
}
final Runnable r = new Runnable() {
public void run() {
int lineCount = TextView2.getLineCount();
if (lineCount == 1) {
linLay2.removeView(TextView3);
linLay1.addView(TextView3);
} else if (lineCount == 2) {
int lineStart0 = TextView2.getLayout().getLineStart(0);
int lineEnd0 = TextView2.getLayout().getLineEnd(0);
int lineStart = TextView2.getLayout().getLineStart(1);
int lineEnd = TextView2.getLayout().getLineEnd(1);
CharSequence extraText0 = TextView2.getText().subSequence(
lineStart0, lineEnd0);
CharSequence extraText = TextView2.getText().subSequence(lineStart,
lineEnd);
TextView2.setText(extraText0);
TextView3.setText(extraText);
} else if (lineCount == 3) {
int lineStart0 = TextView2.getLayout().getLineStart(0);
int lineEnd0 = TextView2.getLayout().getLineEnd(0);
int lineStart1 = TextView2.getLayout().getLineStart(1);
int lineEnd1 = TextView2.getLayout().getLineEnd(1);
int lineStart2 = TextView2.getLayout().getLineStart(2);
int lineEnd2 = TextView2.getLayout().getLineEnd(2);
CharSequence extraText0 = TextView2.getText().subSequence(
lineStart0, lineEnd0);
CharSequence extraText1 = TextView2.getText().subSequence(
lineStart1, lineEnd1);
CharSequence extraText2 = TextView2.getText().subSequence(
lineStart2, lineEnd2);
CharSequence oneTwo = TextUtils.concat(extraText1, extraText2);
TextView2.setText(extraText0);
TextView3.setText(oneTwo);
} else if (lineCount == 4) {
int lineStart0 = TextView2.getLayout().getLineStart(0);
int lineEnd0 = TextView2.getLayout().getLineEnd(0);
int lineStart1 = TextView2.getLayout().getLineStart(1);
int lineEnd1 = TextView2.getLayout().getLineEnd(1);
int lineStart2 = TextView2.getLayout().getLineStart(2);
int lineEnd2 = TextView2.getLayout().getLineEnd(2);
int lineStart3 = TextView2.getLayout().getLineStart(3);
int lineEnd3 = TextView2.getLayout().getLineEnd(3);
CharSequence extraText0 = TextView2.getText().subSequence(
lineStart0, lineEnd0);
CharSequence extraText1 = TextView2.getText().subSequence(
lineStart1, lineEnd1);
CharSequence extraText2 = TextView2.getText().subSequence(
lineStart2, lineEnd2);
CharSequence extraText3 = TextView2.getText().subSequence(
lineStart3, lineEnd3);
CharSequence oneTwo = TextUtils.concat(extraText1, extraText2,
extraText3);
TextView2.setText(extraText0);
TextView3.setText(oneTwo);
}
linLay1.setVisibility(View.VISIBLE);
linLay2.setVisibility(View.VISIBLE);
}
我添加了一个可运行文件,因为 Android 似乎需要稍作停顿才能在屏幕上绘制文本。
【问题讨论】:
标签: android android-edittext word-wrap