最初隐藏的视图布局,然后 onclick 将使视图可见,反之亦然(Android)

Posted

技术标签:

【中文标题】最初隐藏的视图布局,然后 onclick 将使视图可见,反之亦然(Android)【英文标题】:View layout that are initially hidden, then onclick will make view visible, and vice versa(Android) 【发布时间】:2021-01-29 12:22:40 【问题描述】:

我有一个最初设置为 GONE expandableLayout.setVisibility(View.GONE); 的约束布局可见性。我想让视图在发出“setOnClickListener”时可见。然后,当用户再次单击布局时,视图将设置为 Gone Again。

public class ViewHolder extends RecyclerView.ViewHolder 
        TextView mThicc;
        ListView listView;
        ConstraintLayout expandableLayout;

        public ViewHolder(@NonNull View itemView) 
            super(itemView);
            mThicc = itemView.findViewById(R.id.thicc);
            listView = itemView.findViewById(R.id.stocklist);
            expandableLayout = itemView.findViewById(R.id.expandableLayout);

            expandableLayout.setVisibility(View.GONE);
            
            itemView.setOnClickListener(new View.OnClickListener() 
                @Override
                public void onClick(View view) 
                    expandableLayout.setVisibility(View.GONE);
                
            );

        
    

问题是,当我点击布局时,它不会保持隐藏状态。

【问题讨论】:

【参考方案1】:

试试这个:

public class ViewHolder extends RecyclerView.ViewHolder      
        TextView mThicc;
        ListView listView;
        ConstraintLayout expandableLayout;

        public ViewHolder(@NonNull View itemView) 
            super(itemView);
            mThicc = itemView.findViewById(R.id.thicc);
            listView = itemView.findViewById(R.id.stocklist);
            expandableLayout = itemView.findViewById(R.id.expandableLayout);

            expandableLayout.setVisibility(View.GONE);
            
            itemView.setOnClickListener(new View.OnClickListener() 
                @Override
                public void onClick(View view) 
                    int visibility =  expandableLayout.getVisibility() == View.GONE ? View.VISIBLE : View.GONE;
                    expandableLayout.setVisibility(visibility);
                
            );

        
    

但我不推荐这种方法,因为如果 ViewHolder 被回收,它将失去其visibility 状态。您需要保持列表项的可见性。

【讨论】:

【参考方案2】:

尝试进行调节并检查按钮单击时视图是否可见或消失

if(expandableLayout.getVisibility==View.GONE)
    expandableLayout.setVisibility(View.VISIBLE);

 else 
    expandableLayout.setVisibility(View.GONE); 

【讨论】:

这个帮助很大。由于我从 firebase 提取数据,我只需要调用“notifyItemChanged(getAdapterPosition())”,它的工作原理就像魅力

以上是关于最初隐藏的视图布局,然后 onclick 将使视图可见,反之亦然(Android)的主要内容,如果未能解决你的问题,请参考以下文章

ios自动布局视觉格式设置子视图与父视图大小相同,但垂直偏移

在 UITableViewController 顶部添加一个视图,该视图最初是隐藏的,直到用户下拉

将视图粘贴在协调器布局内的 viewpager 片段的底部

我想从片段中隐藏片段容器视图(在 MainActivity 布局内),但是当我单击任务按钮然后重新打开应用程序时它不起作用

OnClick 事件与列表视图项目重复

Android列表视图setOnItemClickListener不起作用