【问题标题】:How to enable or disable an editText by selecting a spinner如何通过选择微调器来启用或禁用 editText
【发布时间】:2017-10-12 08:20:49
【问题描述】:

问题是它会禁用文本编辑,但如果是 Switch 1,当您必须再次激活它时它不会

这是我正在使用的代码。

public class ejemolo extends AppCompatActivity {

    String[] Items = {
            "Dc amps a Kw",
            "Ac una fase amp a kw ",
            "Ac trifasicaamps a kw (linia a linea de voltaje)",
                "Ac trifasica amps a kw (linia a voltaje neutral)",

        };

        Spinner s1;

        private String[] listOfObjects;

        EditText ampEditText , voltageEditText , powerfactorEditText  ;

        TextView text1 , text2 , text3, text4 ;

        @RequiresApi(api = Build.VERSION_CODES.N)
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_ejemolo);

            FloatingActionButton buttonback = (FloatingActionButton)findViewById(R.id.floatingActionButtonback);
            buttonback.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Intent intent  = new Intent(v.getContext() , Weight.class);
                    startActivityForResult(intent ,0);
                }
            });

            FloatingActionButton buttonhome = (FloatingActionButton)findViewById(R.id.floatingActionButtonhome);
            buttonhome.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Intent intent  = new Intent(v.getContext() , MainActivity.class);
                    startActivityForResult(intent ,0);
                }
            });

            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

            s1 = (Spinner) findViewById(R.id.spinnerAmp);

            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_spinner_item, Items);

            s1.setAdapter(adapter);

            ampEditText = (EditText)findViewById(R.id.ampEditText);
            voltageEditText = (EditText)findViewById(R.id.voltageEditText);

            powerfactorEditText = (EditText)findViewById(R.id.powerfactorEditText);

            //text1=(TextView)findViewById(R.id.tonsTextResult1);
            //text2=(TextView)findViewById(R.id.tonsTextResult2);

            listOfObjects = getResources().getStringArray(R.array.object_array4);

    //        final Spinner spinner = (Spinner)findViewById(R.id.spinnerAmp);

            final android.icu.text.DecimalFormat decimals = new android.icu.text.DecimalFormat("0.00"); /** la cantidad de digitos decimales que se muestra */

           // ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_item, listOfObjects);

            s1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                    switch (position) {

                        case 0 :

                            int indzex = s1.getSelectedItemPosition();
                            powerfactorEditText.setFocusable(false);
                            powerfactorEditText.setEnabled(false);
                            powerfactorEditText.setCursorVisible(false);
                            powerfactorEditText.setKeyListener(null);
                            powerfactorEditText.setBackgroundColor(Color.TRANSPARENT);

                            break;

                        case 1:

                            int index = s1.getSelectedItemPosition();
                            powerfactorEditText.setEnabled(true);
                            powerfactorEditText.setInputType(InputType.TYPE_CLASS_TEXT);
                            powerfactorEditText.setFocusable(true);
                            powerfactorEditText.setCursorVisible(true);

                            break;

                    }

                }

                @Override
                public void onNothingSelected(AdapterView<?> f
        }

    }

我想在微调器案例 2 中启用该问题..

【问题讨论】:

  • 乍一看,backgroundcolor 会杀死EditText 背景。删除`backgroundcolor`行并重试
  • @rupps 我想在第一种情况下删除editTex并在第二种情况下显示
  • 那么只需powerfactorEditText.setVisibility(View.GONE) 就足以隐藏它
  • @rupps 它工作,显示它使用,powerfactorEditText.setVisibility(View.VISIBLE);
  • 是的 :) 你猜对了!

标签: java android android-edittext spinner


【解决方案1】:

由于案例 0 中的这一行,您无法启用 EditText: powerfactorEditText.setKeyListener(null);

请删除此行并测试否则设置正确的 Keylistener。

参考以下链接: Edit Text key listener

【讨论】:

    【解决方案2】:

    我用这个方法:

    switch (position) {
        case 0 :
            int indzex = s1.getSelectedItemPosition();
            //powerfactorEditText.setFocusable(false);
            powerfactorEditText.setVisibility(View.GONE);
        break;
    
        case 1:
            int index = s1.getSelectedItemPosition();
            //powerfactorEditText.setFocusable(true);
            powerfactorEditText.setVisibility(View.VISIBLE);
        break;
    }
    

    【讨论】:

      猜你喜欢
      • 2012-11-05
      • 2021-06-15
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多