slider

还是菜鸟
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

阻止点击numberpicker(edittext)时候弹出输入法

Posted on 2013-03-21 16:10  slider  阅读(1571)  评论(1编辑  收藏  举报

1.首先说说默认不显示输入法,这里通常又三种:

在 AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为 adjustUnspecified|stateHidden


  < activity android:name=".Main"
    android:label="@string/app_name"
    android:windowSoftInputMode="adjustUnspecified|stateHidden"
    android:configChanges="orientation|keyboardHidden">  //这里我没有输入也是可以的
  < intent-filter>
    < action android:name="android.intent.action.MAIN" />
    < category android:name="android.intent.category.LAUNCHER" />
  < /intent-filter>
  < /activity>

方法二:

  让 EditText失去焦点,使用EditText的clearFocus方法

  例如:
EditText edit=(EditText)findViewById(R.id.edit);
  edit.clearFocus();

方法三:

  强制隐藏Android输入法窗口

例如:
  EditText edit=(EditText)findViewById(R.id.edit);
  InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
  imm.hideSoftInputFromWindow(edit.getWindowToken(),0);

  然后就说说numberpicker。找个是android3.0之后才有的一个控件,总的来说并不美观(很多人会用想numberwheelpicker之类的控件),但还是蛮使用的。很多情况下并不希望点击numberpicker时候弹出输入法。所以又下面的解决办法,本质还是处理edittext哦:

numberPicker = (NumberPicker)findViewById(R.id.numPicker);
        numberPicker.setMaxValue(100);
        numberPicker.setMinValue(0);
        numberPicker.setWrapSelectorWheel(false);
        String[] nums = new String[100];
        for(int i=0; i<nums.length; i++)
           nums[i] = Integer.toString(i);
        numberPicker.setDisplayedValues(nums);
        numberPicker.setFocusable(false);
        numberPicker.setValue(1);
        ((EditText) numberPicker.getChildAt(1)).setOnFocusChangeListener(new OnFocusChangeListener() {
            
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                // do nothing
            }
        });
        // Suppress soft keyboard from the beginning
        ((EditText) numberPicker.getChildAt(1)).setInputType(InputType.TYPE_NULL);