在LinearLayout中优雅地跟随文本

时间:2013-11-04 11:40:44

标签: android android-layout textview

我有一个如下的LinearLayout。

<LinearLayout
        android:id="@+id/messageLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp" 
        android:orientation="horizontal" />

在此布局中,动态TextViews在运行时添加。但在运行时插入之前,我尝试手动添加5个texviews。这就是它的样子。

enter image description here

那些textview的布局是

<TextView
            android:id="@+id/textView5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Small Text"
            android:textAppearance="?android:attr/textAppearanceSmall" />

我需要最后一个文本正常地按照正常情况而不是像上图一样分解。

我哪里错了?你能帮我搞清楚吗?

修改

我有要显示的消息。例如,英格兰击败澳大利亚 最终冠军。这些粗体文本附加了一些ID,单击时会打开一个对话框。所以我打破了文本并将它们添加为不同的TextView,因此我可以轻松附加onClickListener。我需要消息来查看单个文本。希望现在更有意义。

编辑2

我使用clickableSpan作为一种解决方法。

SpannableString spannableString = new SpannableString(message);
ClickableSpan clickableSpan = new ClickableSpan() {
    @Override
    public void onClick(View widget) {
        Log.i(TAG_NAME, "clickable span...");
    }
};

spannableString.setSpan(clickableSpan, 0, 13, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString.setSpan(clickableSpan, 30, 40, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

我要做的就是在textview中添加多个span。但是,看起来只有最后一个跨度才有效。我哪里错了?

1 个答案:

答案 0 :(得分:0)

将每个textView的权重赋予1

试试这个:

<TextView
            android:id="@+id/textView5"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Small Text"
            android:layout_weight="1" 
            android:textAppearance="?android:attr/textAppearanceSmall" />    

希望这有效