labview如何设置一个按钮的可见与隐藏;即当一定的条件满足时按钮才会显示出来可用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了labview如何设置一个按钮的可见与隐藏;即当一定的条件满足时按钮才会显示出来可用相关的知识,希望对你有一定的参考价值。

如题~~~

每个控件的属性节点里面都有一个属性 可见 (英文:visible),当值为 T的时候,可见,值为F的时候,不可见。给定你自己的条件判断,通过条件结构选择是写入T或者F就可以实现了!

如下图:

参考技术A 创建这个按钮的属性节点(写入状态),输入的一端连上你的条件。 参考技术B

下面程序你可以编来体验下,

参考技术C 按钮的属性节点里有相应设置

滚动列表视图后如何在按钮上设置焦点(设置可见性)

【中文标题】滚动列表视图后如何在按钮上设置焦点(设置可见性)【英文标题】:How to set focus on button after scrolling list view (Set Visibility) 【发布时间】:2018-10-04 04:36:54 【问题描述】:

我是 android 新手,我正在使用带有一个文本视图和按钮的列表视图。我正在执行一些可见性的东西,在单击 button1 后它将隐藏 button1 并显示 button2。

设置可见性 View.GONEView.VISIBLE 工作正常,但是当我神奇地滚动列表视图时出现问题,它将所有 button1 重置为 View .VISIBLE 状态。

请任何人帮助我解决这个问题。

代码:

 @Override
public View getChildView(final int i, final int i1, boolean b, View 
 view, ViewGroup viewGroup) 

    if(view == null) 
        holder =  new ViewHolder();
        LayoutInflater parentInflater = (LayoutInflater) mctx.getSystemService(mctx.LAYOUT_INFLATER_SERVICE);
        view = parentInflater.inflate(R.layout.itemname_child_layout, null);
     else 
        holder = (ViewHolder) view.getTag();
    

   holder.button1 = view.findViewById(R.id.button1);
   holder.button1 = view.findViewById(R.id.button2);

   //initial button state
   holder.button1.setVisibility(View.VISIBLE);
   holder.button1.setVisibility(View.GONE);

   holder.recordBtn.setOnClickListener(new View.OnClickListener() 
      @Override
      public void onClick(View view) 
         holder.button1.setVisibility(View.GONE);
         holder.button2.setVisibility(View.VISIBLE);
      
   

   view.setTag(holder);

 return view;

【问题讨论】:

尝试使用recylerview 【参考方案1】:

您需要记录按钮的点击,因为当您滚动列表视图时,它会刷新到上一阶段。

所以像这样在你的适配器类中通用声明一个变量:

  ArrayList<Integer> count = new ArrayList(); 

现在将列表设置为 0 直到适配器大小

    for(int i=0;i<adapter.size;i++)
     count.add(0);
     

然后在单击 button1 后,将您的按钮可见性设置如下:

              holder.recordBtn.setTag(position);

     if(count.get(position)==0)
         holder.button1.setVisibility(View.GONE);
         holder.button2.setVisibility(View.VISIBLE);
        
         else
         holder.button1.setVisibility(View.VISIBLE);
         holder.button2.setVisibility(View.GONE);
           

       holder.recordBtn.setOnClickListener(new View.OnClickListener() 
      @Override
      public void onClick(View view) 
         int pos = (int)view.getTag();
         if(count.get(pos)==0)
         count.set(pos,1);
         holder.button1.setVisibility(View.GONE);
         holder.button2.setVisibility(View.VISIBLE);
        
         else
         count.set(pos,0);
         holder.button1.setVisibility(View.VISIBLE);
         holder.button2.setVisibility(View.GONE);
           
      
   

【讨论】:

感谢您的回答,它正在部分工作,当我单击 button1 时,它隐藏并显示 button2 很好。并且由于 button1 点击计数设置为 1。当我点击 下一个系列的 button1 时,它无法隐藏,因为在点击上一个 button1 后,我将计数更新为 1。所以现在我需要点击两次下一个系列的 button1 使其成为 button2。有什么想法吗??【参考方案2】:

试试这个...我已经编辑了你的代码

 @Override
 public View getChildView(final int i, final int i1, boolean b, View 
 view, ViewGroup viewGroup) 

    if(view == null) 
        holder =  new ViewHolder();
        LayoutInflater parentInflater = (LayoutInflater) mctx.getSystemService(mctx.LAYOUT_INFLATER_SERVICE);
        view = parentInflater.inflate(R.layout.itemname_child_layout, null);
        holder.button1 = view.findViewById(R.id.button1);
        holder.button2 = view.findViewById(R.id.button2);
        view.setTag(holder);
     else 
        holder = (ViewHolder) view.getTag();
    


   //initial button state
   holder.button1.setVisibility(View.VISIBLE);
   holder.button2.setVisibility(View.GONE);

   holder.recordBtn.setOnClickListener(new View.OnClickListener() 
      @Override
      public void onClick(View view) 

         holder.button1.setVisibility(View.GONE);
         holder.button2.setVisibility(View.VISIBLE);
      
   


 return view;

【讨论】:

感谢 Pratik 的回答。您能解释一下您在这里使用 button1 和 button2 到底在做什么吗? holder.button1 = view.findViewById(R.id.button1); holder.button1 = view.findViewById(R.id.button2); @MithunWalawalkar 看到我再次编辑了我的答案,你在 setTag() 之前调用 getTag()。每次你必须先 getview 和 setTag() 然后 getTag() 不,我更改了代码,但也面临同样的问题。

以上是关于labview如何设置一个按钮的可见与隐藏;即当一定的条件满足时按钮才会显示出来可用的主要内容,如果未能解决你的问题,请参考以下文章

labview中制作一个选项卡按钮设置好背景,放入进去的控件怎么才能不被覆盖

WPF如何把隐藏控件显示出来

labview 如何设置按钮按下后形状还原?

如何设置可见以隐藏设置为可见的 jDialog(在 if 条件内)显示(在 if 循环之外)?

labview,子VI是一个简单的AM调制。要设置一个按钮,点这个按钮能直接调用这个子VI

使用转换器的DataGridColumn可见性