【问题标题】:Follow text gracefully within a LinearLayout在 LinearLayout 中优雅地跟随文本
【发布时间】:2013-11-04 22:24:38
【问题描述】:

我有一个如下的 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" />

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

那些文本视图的布局是

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

我要做的就是将多个跨度添加到文本视图。但是,看起来只有最后一个跨度有效。我哪里错了?

【问题讨论】:

  • 你说的“最后一个正常正常跟随的文本”是什么意思?它应该转到下一行吗?它应该走出屏幕吗?它们都应该缩小以适应这个吗?(如果文本视图比图片中显示的多,会发生什么情况……)?
  • 您不应该有多个文本视图。请改用ClickableSpan。它会让你的生活更轻松.. stackoverflow.com/a/10697453/827110 所以基本上,一个包含bold 部分的文本视图是clickable.. 听起来不错?
  • 感谢您的回复!那么你如何识别点击了哪些文本呢?当我点击英格兰时说。可点击跨度适用于静态文本。不确定动态文本。
  • 所以每个词,(英格兰,澳大利亚..)都是一个ClickableSpan,它有自己的OnClickListener,所以你会知道
  • @Renjith:我认为一个跨度只能添加一次。尝试创建第二个...

标签: android android-layout textview


【解决方案1】:

将每个 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" />    

希望这可行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 2013-12-13
    • 2018-11-29
    • 1970-01-01
    • 2010-11-01
    • 2012-09-30
    相关资源
    最近更新 更多