AndroidはNavigationViewとToolbarとDrawLayoutを使ってサイドスライドメニューを実現
6287 ワード
1、まずappcompat-v 7サポートを追加する必要があります.
Android Studio 2.1 Preview 3で作成されたプロジェクトの場合、appcompat-v 7とdesignのサポートがデフォルトで追加されていますが、最新版Android Studioでない場合はbuild.gradleに次のコードを追加します.
次にCtrl+F 9をコンパイルします.
2、メインレイアウトファイルにDrawerLayoutを追加する:
activity_main.xml
3、ToolBarを含む追加:
AndroidManifestでxmlは、付属のActionBarを削除する必要があります.
toolbarを定義します.xmlのスタイル
4、Java実現のコアコード:
Android Studio 2.1 Preview 3で作成されたプロジェクトの場合、appcompat-v 7とdesignのサポートがデフォルトで追加されていますが、最新版Android Studioでない場合はbuild.gradleに次のコードを追加します.
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:design:23.2.0'
}
次にCtrl+F 9をコンパイルします.
2、メインレイアウトファイルにDrawerLayoutを追加する:
activity_main.xml
3、ToolBarを含む追加:
AndroidManifestでxmlは、付属のActionBarを削除する必要があります.
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
toolbarを定義します.xmlのスタイル
4、Java実現のコアコード:
package supermap.com.myapplication;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.FrameLayout;
import butterknife.BindView;
import butterknife.ButterKnife;
public class Main7Activity extends AppCompatActivity {
@BindView(R.id.ly_content)
FrameLayout lyContent;
@BindView(R.id.drawer_layout)
DrawerLayout drawerLayout;
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.navigation_view)
NavigationView navigationView;
ActionBarDrawerToggle mDrawerToggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main7);
ButterKnife.bind(this);
// Logo
toolbar.setLogo(R.mipmap.iv_icon_baidu);
//
toolbar.setTitle("Title");
//
// toolbar.setSubtitle("Sub Title");
// toolbar
setSupportActionBar(toolbar);
//
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
// ( setSupportActionBar(toolbar) )
// toolbar.setNavigationIcon(R.mipmap.iv_icon_douban);
// ( setSupportActionBar(toolbar) )
// toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
// @Override
// public boolean onMenuItemClick(MenuItem item) {
// Log.e("b", false + "");
// return true;
// }
// });
mDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.app_name, R.string.app_name) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
}
};
mDrawerToggle.syncState();
//
drawerLayout.setDrawerListener(mDrawerToggle);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
BlankFragment contentFragment = new BlankFragment();
Bundle args = new Bundle();
args.putString("text", "text");
contentFragment.setArguments(args);
FragmentManager fm = getSupportFragmentManager();
fm.beginTransaction().replace(R.id.ly_content, contentFragment).commit();
drawerLayout.closeDrawer(navigationView);
return true;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// getMenuInflater().inflate(R.menu.menu_item, menu);
return true;
}
}