在LinearLayout中以编程方式并排设置两个TextView

时间:2014-11-04 20:25:23

标签: java android android-layout textview

所以,我正在迭代HashMap的Strings和Booleans。我在每个String的LinearLayout上放置一个TextView。这一切都很好。我需要做的是将每个String TextView的布尔值的TextView放到右侧。有任何想法吗?这就是我要找的......

enter image description here

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);
    }
}

1 个答案:

答案 0 :(得分:1)

LinearLayout只能在一个方向上放置:在这种情况下垂直放置。来自docs

  

将其子项排列在单个列或单个列中的布局   行。可以通过调用setOrientation()来设置行的方向。

虽然你可以嵌套另一个水平LinearLayout(每个项目一个)并添加TextViews作为其子项,但在这种情况下,将值连接到同一个TextView对象似乎要简单得多。 / p>

如果您只需要部分文字可点击,则可以使用ClickableSpan来实现此目的(请记住也使用setMovementMethod(),以便它可以使用)。