【问题标题】:How to lock the spinner after button click in android如何在android中单击按钮后锁定微调器
【发布时间】:2014-10-17 00:47:48
【问题描述】:

如何防止用户在按下按钮等事件后更改spinner 中选择的值?

就像从spinner 中选择所需的值后,用户将按下button,之后他们将无法看到spinner 中的值,除了顶部值,即选定的值这样所选值就不会发生变化。

更新:- 是的,spinners 也是在按下 same button 时动态创建的,因此它应该只锁定以前创建的微调器,而不是新的。

动态创建 Layout 的代码,其中包含 Spinner 以及 EditTextButton:-

 View.OnClickListener addListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final RelativeLayout newView = (RelativeLayout) getLayoutInflater().inflate(R.layout.product_row_detail, null);

            newView.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));

            ImageButton btnRemove = (ImageButton) newView.findViewById(R.id.btnRemove);
            btnRemove.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    container.removeView(newView);
                }
            });

            container.addView(newView);

【问题讨论】:

    标签: java android dynamic spinner


    【解决方案1】:

    你需要创建一个变量(可能是boolean flag = true

    点击按钮变为flag = false

    在 Listener to Spinner 检查 flag 是 true 还是 false

    示例

    //spinner的内部监听器

    if(flag){
    //do task
    }else{
    //restrict the task or don't do anything or display message
    }
    

    更新问题

    那么你应该使用 disable() 方法。 spinner1.disable() 或 spinner2.disable() 等等..

    【讨论】:

    • :-) 保持 else 块为空,简单
    • 而在 if 块中,做你想做的任务
    • @Amit 或使用 PrivatMamtora 指示的禁用方法
    【解决方案2】:

    简单的只是禁用按钮单击时的微调器

    spinner.setEnabled(false);

    【讨论】:

      【解决方案3】:

      在您的 onClick 方法中,您只需将可见性设置为 GONE 即可删除视图,如下所示:

      View.OnClickListener addListener = new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              final RelativeLayout newView = (RelativeLayout) getLayoutInflater().inflate(R.layout.product_row_detail, null);
      
              newView.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
      
              ImageButton btnRemove = (ImageButton) newView.findViewById(R.id.btnRemove);
              btnRemove.setOnClickListener(new View.OnClickListener() {
      
                  @Override
                  public void onClick(View v) {
                      newView.setVisibility(View.GONE);  // remove (hide) your view
                  }
              });
      
              container.addView(newView);
      

      要再次启用它,您可以将其可见性设置为 VISIBLE,如下所示:

      newView.setVIsibility(View.VISIBLE);
      

      或者您可以只显示/隐藏您的微调器,如下所示:

      your_spinner.setVisibility(View.GONE);  // to remove (hide)
      your_spinner.setVisibility(View.VISIBLE);  // to make it visible
      

      如果您只想禁用微调器:

      your_spinner.setEnabled(false);
      

      希望对你有帮助。

      【讨论】:

      • 这会移除整个新布局的可见性,对吧?
      • 是的,它将删除整个布局的可见性,包括其子视图
      • 该布局包含 Spinner 以及 EditTextButton 但我不想禁用除微调器之外的任何其他内容。
      • 您可以简单地隐藏您的微调器或禁用它。
      猜你喜欢
      • 2019-08-01
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-06
      • 1970-01-01
      • 2016-12-26
      相关资源
      最近更新 更多