我有“strings”=表示放在数组中的字符的单词,名为“bWord”,将字符放在按钮中,问题是空格“”被认为是一个字符,也放在一个按钮中。我不是字符串“”来创建一个断行而不是调用bWord
像Book Cover这样的词会显示如下: [B] [O] [O] [K] [] [C] [O] [V] [E] [R]我希望它看起来像
[B] [O] [O] [K]
[C] [O] [V] [E] [R]
这是当前问题的图片:
我被告知要创建一个新的布局,但我不知道如何去做这个
这是我正在使用的代码
// draw word buttons
RelativeLayout wordLayout = (RelativeLayout) findViewById(R.id.wordlayout);
String[] word = ld.getLevelSpecific().getProcessedWord();
for (int i = 0; i < word.length; i++) {
Button temp = new Button(this);
temp.setText("");
temp.setTypeface(null, Typeface.BOLD);
temp.setTextSize(TypedValue.COMPLEX_UNIT_SP, isd.getWordTextSize());
temp.setIncludeFontPadding(false);
temp.setId(idCount * 2 + i);
temp.setTag(Integer.valueOf(i));
temp.setBackgroundResource(R.drawable.button_shape_letter);
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
(int) (isd.getWordButtonSize() * orm.getScaleRatio()-2),
(int) (isd.getWordButtonSize() * orm.getScaleRatio()+6*orm.getScaleRatio()));
if (i > 0) {
p.addRule(RelativeLayout.RIGHT_OF, idCount * 2 + i - 1);
} else {
p.addRule(RelativeLayout.ALIGN_PARENT_TOP);
p.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
}
p.setMargins(isd.getExtraspaceWord()+1, isd.getExtraspaceWord(),
isd.getExtraspaceWord()+1, isd.getExtraspaceWord());
temp.setLayoutParams(p);
bWord[i] = temp;
temp.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
onWordPressed((Integer) v.getTag());
}
});
wordLayout.addView(temp);
}
答案 0 :(得分:0)
我不确定我是否理解你的问题。
你提到了“书籍封面”这个词,但你的截图显示了“比尔克林顿”......
我做了一个修复显示:
[B] [I] [L] [L]
[C] [L] [I] [N] [T] [O] [N]
而不是:
[B] [I] [L] [L] [] [C] [L] [I] [N] [T] [O] [N]
如何解决:
选项1:
您可以用两个LinearLayouts替换RelativeLayout。例如,Line1和Line2。
然后,在运行时,您调用:
LinearLayout Line1 = (LinearLayout) findViewById(R.id.line1);
LinearLayout Line2 = (LinearLayout) findViewById(R.id.line2);
...
if(word[i].equals(" "))
insertingInFirstLine = false;
...
if(insertingInFirstLine)
Line1.addView(newButton);
else
Line2.addView(newButton);
好的一点是,您不必担心视图ID。只需创建水平方向的线性布局,然后将它们放在另一个下方。
当单词只有一行时,您可以将Line2可见性设置为“View.GONE”
选项2:
如果你真的需要使用相对布局,我更新了你的“FOR”循环。这样,在空格char(“”)之后,所有新视图将添加到第一行下方。 以下是示例:
int lineDivider = 1000;
for (int i = 0; i < word.length; i++) {
if(word[i].equalsIgnoreCase(" ")) {
lineDivider = i;
} else {
Button temp = new Button(this);
...
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
(int) (isd.getWordButtonSize() * orm.getScaleRatio()-2),
(int) (isd.getWordButtonSize() * orm.getScaleRatio()+6*orm.getScaleRatio()));
if (i > 0) {
if(i < lineDivider) {
// First Line Items
p.addRule(RelativeLayout.RIGHT_OF, idCount * 2 + i - 1);
} else if (i == lineDivider + 1) {
// First Item of Second Line
p.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
p.addRule(RelativeLayout.BELOW, idCount * 2);
} else {
// Second Line Items
p.addRule(RelativeLayout.BELOW, idCount * 2);
p.addRule(RelativeLayout.RIGHT_OF, idCount * 2 + i - 1);
}
} else {
// First ITEM
p.addRule(RelativeLayout.ALIGN_PARENT_TOP);
p.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
}
....
}
}