我使用ViewPager实现了三个标签。在右侧标签布局中,我有一个编辑文本小部件,当用户点击它时键盘出现。如果用户未手动关闭键盘并向中间或左侧选项卡滑动,则键盘仍保留在屏幕上。那么如何避免在我不需要的其他两个标签中使用键盘。
编辑:这是我的代码。
class ViewPagerActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MyPagerAdapter adapter = new MyPagerAdapter();
ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager);
myPager.setAdapter(adapter);
myPager.setCurrentItem(1);
TitlePageIndicator titleIndicator = (TitlePageIndicator) findViewById(R.id.titles);
titleIndicator.setViewPager(myPager);
} }
第二个文件:MyPagerAdapter.java
class MyPagerAdapter extends PagerAdapter implements OnClickListener,
OnLongClickListener, AdapterView.OnItemSelectedListener {
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
View view;
switch (position) {
case 0:
resId = R.layout.left;
view = inflater.inflate(resId, null);
break;
case 1:
resId = R.layout.main_c;
view = inflater.inflate(resId, null);
btn_no1 = (Button) view.findViewById(R.id.one);
btn_no1.setOnClickListener(this);
((ViewPager) collection).addView(view, 0);
return view;
case 2:
resId = R.layout.right;
view = inflater.inflate(resId, null);
main_spinner = (Spinner) view.findViewById(R.id.spinner1);
main_spinner.setOnItemSelectedListener(this);
from_spinner = (Spinner) view.findViewById(R.id.spinner2);
from_spinner.setOnItemSelectedListener(this);
to_spinner = (Spinner) view.findViewById(R.id.spinner3);
to_spinner.setOnItemSelectedListener(this);
swap = (ImageButton) view.findViewById(R.id.swap_spinner);
swap.setOnClickListener(this);
((ViewPager) collection).addView(view, 0);
return view;
}
view = inflater.inflate(resId, null);
((ViewPager) collection).addView(view, 0);
return view;
}
TitlePageIndicator看起来像这样:TitlePageIndicator
答案 0 :(得分:2)
在我看来,这不是一个严重的问题。用户打开键盘进行文本输入,并在不再需要时将其隐藏。
引用EditText对象后,应隐藏键盘:
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0);
离开右侧标签时,请调用上面的代码段。
答案 1 :(得分:1)
试试这个。
首先,听一下ViewPager.OnPageChangeListener事件。 然后检查软键盘是否可见,如果它显示在不需要的页面中, 使用以下代码隐藏它:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
if(imm != null){
imm.toggleSoftInput(0, InputMethodManager.HIDE_IMPLICIT_ONLY);
}
希望有所帮助。 :)