所以,我正在迭代HashMap
的Strings和Booleans。我在每个String的LinearLayout上放置一个TextView。这一切都很好。我需要做的是将每个String TextView的布尔值的TextView放到右侧。有任何想法吗?这就是我要找的......
LinearLayout planLayout = (LinearLayout) findViewById(R.id.planLayout);
for (Map.Entry<String, Boolean> entry : plans.entrySet()) {
String key = entry.getKey();
Boolean value = entry.getValue();
TextView keyTV = new TextView(this);
keyTV.setText(key + " | ");
// here is where I want to set a TextView of the Boolean to the right of the keyTV
planLayout.addView(keyTV);
}
使用ClickableSpan更新
LinearLayout planLayout = (LinearLayout) findViewById(R.id.planLayout);
for (Map.Entry<String, Boolean> entry : plans.entrySet()) {
String key = entry.getKey();
Boolean value = entry.getValue();
TextView keyTV = new TextView(this);
SpannableString ss = new SpannableString(value.toString());
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
Toast.makeText(getApplicationContext(), "clicked",
Toast.LENGTH_SHORT).show();
System.out.println("Hello");
}
};
ss.setSpan(clickableSpan, 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
keyTV.setText(key + " | " + ss);
keyTV.setMovementMethod(LinkMovementMethod.getInstance());
keyTV.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
planLayout.addView(keyTV);
}
}
答案 0 :(得分:1)
LinearLayout
只能在一个方向上放置:在这种情况下垂直放置。来自docs:
将其子项排列在单个列或单个列中的布局 行。可以通过调用
setOrientation()
来设置行的方向。
虽然你可以嵌套另一个水平LinearLayout
(每个项目一个)并添加TextViews作为其子项,但在这种情况下,将值连接到同一个TextView对象似乎要简单得多。 / p>
如果您只需要部分文字可点击,则可以使用ClickableSpan
来实现此目的(请记住也使用setMovementMethod()
,以便它可以使用)。