【问题标题】:how to disable a layout and its contents programatically in android如何在android中以编程方式禁用布局及其内容
【发布时间】:2019-09-08 02:07:51
【问题描述】:

我在一个 RelativeLayout 中有 4 个线性布局,而且我也在使用一个 ImageView。显示 ImageView 时,我想禁用 4 个 LinearLayouts 及其内容。每个 LinearLayout 包含 4 个按钮。下面显示的是我禁用和启用这些布局的功能。有人可以帮我理解为什么这不起作用吗?

private void disablelayout(final LinearLayout l1,final LinearLayout l2,final LinearLayout l3,final LinearLayout l4)
    {
        l1.setEnabled(false);
        l2.setEnabled(false);
        l3.setEnabled(false);
        l4.setEnabled(false);

    }
    private void enablelayout(final LinearLayout l1,final LinearLayout l2,final LinearLayout l3,final LinearLayout l4)
    {
        l1.postDelayed(new Runnable(){             
             @Override             
             public void run() {                 
                 l1.setEnabled(true); 
                 l2.setEnabled(true); 
                 l3.setEnabled(true); 
                 l4.setEnabled(true); 
             }         
             }, 3000);
    }

【问题讨论】:

  • 我不想让它不可见。布局应该是可见的。但用户不应该能够点击布局中的按钮

标签: android android-linearlayout


【解决方案1】:
private void enableDisableView(View view, boolean enabled) {
    view.setEnabled(enabled);

    if ( view instanceof ViewGroup ) {
        ViewGroup group = (ViewGroup)view;

        for ( int idx = 0 ; idx < group.getChildCount() ; idx++ ) {
            enableDisableView(group.getChildAt(idx), enabled);
        }
    }
}

【讨论】:

    【解决方案2】:

    使用 setVisibility() 设置为 INVISIBLE 或 GONE。

    【讨论】:

    • 如果我设置这个,线性布局将是不可见的。rt?但我不想让它不可见
    • 我认为禁用你的意思是不能被看到。也许你正在寻找这样的东西:stackoverflow.com/questions/3205384/…
    【解决方案3】:

    这样使用:

    l1.setVisibility(View.GONE);
    l2.setVisibility(View.GONE);
    l3.setVisibility(View.GONE);
    l4.setVisibility(View.GONE);
    

    【讨论】:

      【解决方案4】:
      Use can use this for hide the whole layout
      
      l1.setVisibility(View.GONE);
      l2.setVisibility(View.GONE);
      l3.setVisibility(View.GONE);
      l4.setVisibility(View.GONE);
      
      whenever you want to display particular layout then you can 
      
      l1.setVisibility(View.VISIBLE);
      

      【讨论】:

        【解决方案5】:

        将所有项目的“Clickable”属性设置为 false。方法是setClickable(boolean).
        之后就没有人可以点击了。你也可以看看这个问题:How to disable an Android button

        【讨论】:

        • 我试过这个......但我仍然可以点击按钮......我已经为布局设置了这个属性......那是我问你......是否有必要将 dis 设置为所有 cntrls在 d 布局中..真的很难..
        • 每个视图都有“重复父状态”属性(也在可视化编辑器中)。将所有按钮和您想要的其他 Vis 设置为 true。之后使用 setEnabled(false);计划。它应该可以工作。
        • 我已经为所有按钮设置了 Duplicate parent state 属性。但还是同样的问题...
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多