以编程方式设置 Spinner VISIBLE 并启用

Programmatically set Spinner VISIBLE and enabled

我有一个具有动态字段行为的动态 Android 表单。
示例:如果用户填写字段 A,显示字段 B 并隐藏字段 C。

为此,我正在使用方法 view.setVisibility(View.VISIBLE)view.setEnabled(boolean)。此方法适用于 RadioGroupEditText,但不适用于 Spinner 组件。
微调器设置为可见,但始终处于禁用状态。
.setEnable(true) 方法不会产生任何影响。

我需要显示微调器已启用。
如果微调器可见,则 setEnabled() 起作用。但是如果微调器是不可见的,这 2 个命令一起不起作用。

spinner.setVisibility(View.VISIBLE)
spinner.setEnabled(Boolean.TRUE)

[]的

请提供更多详细信息。以下代码向您展示了如何 show/hide 或 enable/disable 微调器。

boolean visibility = true;
    boolean enabled = true;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout linearLayout = new LinearLayout(this);
        final Spinner spinner = new Spinner(this);
        String[] animals = {"cats","dogs","lines","rats"};
        spinner.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,animals));
        linearLayout.addView(spinner);
        Button visiblity = new Button(this);
        visiblity.setText("VisibilityButton");
        linearLayout.addView(visiblity);
        setContentView(linearLayout);
        visiblity.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(visibility){
                    spinner.setVisibility(View.INVISIBLE);
                    visibility = false;
                }
                else{
                    spinner.setVisibility(View.VISIBLE);
                    visibility = true;
                }
            }
        });
        Button enabledButton = new Button(this);
        enabledButton.setText("EnabledButton");
        linearLayout.addView(enabledButton);
        enabledButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(enabled){
                    spinner.setEnabled(false);
                    enabled = false;
                }
                else{
                    spinner.setEnabled(true);
                    enabled = true;
                }
            }
        });
    }