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

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

文本视图在 LinearLayout

【问题讨论】:

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

标签: android android-layout kotlin textview


【解决方案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);
            }
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-24
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多