如何仅显示具有值的文本视图?

Posted

技术标签:

【中文标题】如何仅显示具有值的文本视图?【英文标题】:How do I display only textviews that have values? 【发布时间】:2021-03-13 08:41:52 【问题描述】:

如果我有 10 个文本视图,我如何有效地显示那些有值并隐藏那些没有值而不检查它们是否有值然后为每个文本视图设置 visibilityVISIBLE。有没有有效的方法来做到这一点?

文本视图在 LinearLayout

【问题讨论】:

你可以检查一个文本视图是否为空,然后设置它的可见性。有没有一种有效的方法来检查所有 10 个文本视图 那为什么不用if 语句检查它们呢? 【参考方案1】:

您将在代码中找到一个无论如何都会进行此检查的位置。

如果您想删除此检查生成的样板,我可以建议使用 kotlin 扩展函数,如下所示:

fun TextView.setTextOrGone(text: String?) 
    this.visibility = if (text.isNullOrBlank()) View.GONE else View.VISIBLE
    this.text = text


然后像这样设置文本:

textView.setTextOrGone(value)

【讨论】:

【参考方案2】:

如果没有要显示的文本,您可以创建一个隐藏自己的自定义文本视图。

public class CustomTextView extends androidx.appcompat.widget.AppCompatTextView 
    public CustomTextView(@NonNull Context context, @Nullable AttributeSet attrs) 
        super(context, attrs);
        if (getText().toString().isEmpty())
            setVisibility(GONE);
        else
            setVisibility(VISIBLE);
        
    


【讨论】:

以上是关于如何仅显示具有值的文本视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在表格视图的文本最后一部分中添加页脚文本?

如何在具有动态高度的文本视图中显示 html?

仅从已更改的文本输入中收集值

在文本文件中查找具有特定值的所有行并将它们显示在 datagridview

如何将文本从文本文件转换为具有词频值的库键?

Kendo UI Grid:自定义下拉提供程序在视图模式下不显示文本