2017-06-03 72 views
0

请,我想隐藏在我的Android应用程序上的键盘,当我点击导航按钮。我已经寻找解决方案,但没有为我工作。如何隐藏安卓键盘上导航切换点击

NavigationDrawerActivity

public class NavigationDrawerActivity extends AppCompatActivity 

implements NavigationView.OnNavigationItemSelectedListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_navigation_drawer); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 

     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 

     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
    } 

    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 

     if (id == R.id.nav_home) { 

     } else if (id == R.id.nav_doctor) { 

     } else if (id == R.id.nav_about_us) { 

     }else if (id == R.id.nav_feedback) { 

     } 
      else if (id == R.id.nav_feedback) { 

     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 
} 

BaseActivity

public class BaseActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { 

    ActionBarDrawerToggle toggle; 


    protected void onCreateDrawer() { 


     DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); 
     toggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.openDrawer, R.string.closeDrawer); 
     drawerLayout.addDrawerListener(toggle); 
     toggle.syncState(); 
     getSupportActionBar() 
       .setDisplayHomeAsUpEnabled(true); 
     NavigationView navigationView = (NavigationView) findViewById(R.id.navigationView); 
     navigationView.setNavigationItemSelectedListener(this); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if (toggle.onOptionsItemSelected(item)) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 

     switch (item.getItemId()) { 

      case R.id.nav_home: 
       Intent homeIntent = new Intent(getApplicationContext(), MainActivity.class); 
       startActivity(homeIntent); 
       break; 

      case R.id.nav_doctor: 
       Intent findDoctorIntent = new Intent(getApplicationContext(), FindDoctorActivity.class); 
       startActivity(findDoctorIntent); 
       break; 



      case R.id.nav_about_us: 
       Intent aboutIntent = new Intent(getApplicationContext(), AboutUsActivity.class); 
       startActivity(aboutIntent); 
       break; 



      case R.id.nav_feedback: 
       Intent feedbackintent = new Intent(getApplicationContext(), FeedbackActivity.class); 
       startActivity(feedbackintent); 
       break; 
      case R.id.logout: 
       FirebaseAuth.getInstance().signOut(); 
       Intent logoutintent = new Intent(getApplicationContext(), LoginActivity.class); 
       logoutintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
       startActivity(logoutintent); 
       finish(); 
       break; 
     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawerLayout); 
     if(drawer.isDrawerOpen(GravityCompat.START)) 
      drawer.closeDrawer(GravityCompat.START); 

     return false; 
    } 
} 

我的MainActivity的Xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    tools:context="com.netemmanuel.medidiag.Activity.MainActivity" 
    android:background="@android:color/background_light" 
    android:id="@+id/drawerLayout"> 



     <TextView 
      android:id="@+id/resultTextview" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="15sp" 
      android:textStyle="bold" 
      android:visibility="invisible" 
      android:paddingLeft="5dp" 
      android:paddingRight="5dp" 
      android:textAppearance="@style/TextAppearance.AppCompat" 
      android:layout_gravity="left|center_vertical|start" 
      /> 

    </LinearLayout> 

    </ScrollView> 

    <android.support.design.widget.NavigationView 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     app:menu="@menu/activity_navigation_drawer_drawer" 
     android:layout_gravity="start" 
     app:headerLayout="@layout/nav_header_navigation_drawer" 
     app:itemBackground="@drawable/pressed_color" 
     android:id="@+id/navigationView" 
     /> 
</android.support.v4.widget.DrawerLayout> 

我的应用程序看起来像这样enter image description here

回答

0

尝试:

ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(
    this,     
    mDrawerLayout,   
    R.drawable.ic_drawer, 
    R.string.drawer_open, 
    R.string.drawer_close) { 
    @Override 
    public void onDrawerStateChanged(int newState) { 
      View view = this.getCurrentFocus(); 
      if (view != null) { 
       InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
      } 
    } 
}); 
mDrawerLayout.setDrawerListener(mDrawerToggle); 
+0

请问在哪些文件中添加这个? – NetEmmanuel

+0

看到编辑后的答案,把这个代码放在DrawerLayout的定义之后。 –

+0

没有为我工作 – NetEmmanuel

0

方法1(如果输入方法已在窗口已经显示,隐藏,相反地显示)InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);

方法2(视图接受软键盘输入,SHOW_FORCED表示强制显示)
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view,InputMethodManager.SHOW_FORCED);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);//Forced to hide the keyboard获取输入法打开状态
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
boolean isOpen=imm.isActive();