【问题标题】:How to display a Button inline within a multiline TextView如何在多行 TextView 中显示内联按钮
【发布时间】:2018-10-17 03:06:01
【问题描述】:

我必须在多行文本视图中嵌入一个“内联”按钮,如下所示:

我不确定如何在 Android 中执行此操作,因为没有布局元素或属性(我知道)允许在文本以多行 TextView 结尾的位置对齐 Button。而且我真的不想为此使用 WebView 并使用 html / css 来完成,因为这个屏幕已经足够重了。任何想法如何完成它?

【问题讨论】:

  • 我相信这是stackoverflow.com/questions/8949520/…的副本
  • @Ian D 如果它只是一个文本链接,那么我可以很容易地做到这一点,但不幸的是它也有一个向下箭头,所以必须是一个带有 drawableRight 的按钮。
  • \u2193 是一个不错的向下箭头

标签: android android-layout


【解决方案1】:

ClickableSpan 是您问题的答案!

【讨论】:

    【解决方案2】:

    Android 字符串接受 unicode 和 html 字符,包括箭头

    【讨论】:

    【解决方案3】:

    您可以使用maxLines=5ellipsize=end 创建textview(tvDescription)

    我假设您要显示的最大行数是 5

    android:ellipsize="end"
    android:maxLines="5"
    

    添加一个view(当前为btnIndicator 按钮。您可以根据需要进行更改)始终位于textView 的右下方。此视图包含文本(查看更多和更少查看)。建议您使用约束布局,这将使您的任务变得容易。

    假设您将 Textview 的引用设为 tvDescription

    右下角的视图为btnIndicator。将onClickListener 添加到此视图。

    btnIndicator.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    int maxLines = tvDescription.getLineCount();
                    if (maxLines == 5) {
                        maxLines = Integer.MAX_VALUE;
                        btnIndicator.setText("View Less")
                    }
                    else {
                        maxLines = 5;
                        btnIndicator.setText("View More")
                    }
                    /*
                    * Here you can append the text VIEW MORE(when max lines is 5)
                    * or ignore if it is already expanded
                    * */
                    tvDescription.setMaxLines(maxLines);
                }
            });
    

    【讨论】:

    • 感谢您的回答,不幸的是,我需要将按钮内嵌在文本中,而不仅仅是简单地与文本视图的右下角对齐。我在 ConstraintLayout 中看不到任何实现这一目标的能力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 2018-06-15
    • 2021-05-30
    • 1970-01-01
    相关资源
    最近更新 更多