のための擬似コードは、あなたがメニューを含む活性を有し、その後にすることができているデモですメニューを使用する必要がある残りのアクティビティはそのアクティビティを実装します。
たとえば、
BaseActivity - メニューを含む:リサイクラービューの
import android.app.ActivityOptions;
import android.os.Bundle;
import android.support.design.widget.NavigationView;
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;
public class BaseActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
public static DrawerLayout drawer;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
drawer = 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 = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
@Override
public void onBackPressed() {
DrawerLayout drawer = findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks
int id = item.getItemId();
switch (id) {
.......
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
// Handle navigation view item clicks
Intent intent;
int id = item.getItemId();
ActivityOptions options =
ActivityOptions.makeCustomAnimation(getApplicationContext(), R.anim.enter, R.anim.exit);
switch (id) {
..............
}
DrawerLayout drawer = findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
活動:あなたのレイアウトタグにあなたのレイアウトXMLで
public class YourActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inflater = (LayoutInflater) this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View contentView = inflater.inflate(R.layout.your_layout, null, false);
BaseActivity.drawer.addView(contentView, 0);
getSupportActionBar().setDisplayShowTitleEnabled(true);
// Lookup the recycler view in activity layout
RecyclerView recyclerView = findViewById(R.id.recyclerView);
// Initialize arrayList
ArrayList<....> arrayList= new ArrayList<>();
// Create adapter
YourAdapter adapter = new CategoryAdapter(...);
// Attach the adapter to the recycler view
recyclerView.setAdapter(adapter);
//Populate the recycler view
adapter.addData();
// Set layout manager to position the items
recyclerView.setLayoutManager(new GridLayoutManager(this, 2,
GridLayoutManager.VERTICAL, false));
}
your_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="20dp"
android:layout_column="2">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</GridLayout>
あなたがボタンや画面上の任意の場所をクリックしたときにのみ起こっているの?それはよくある問題ですし、回避策があるかもしれません – Rainmaker
@Rainmakerそれは画面のどこにでも起こります。私は現在、ジェスチャ検出器をオーバーライドして長押しを無効にする方法を検討しています。それが助けになるかどうかは分かりませんが、どんな助けもありがたいです! –
ええ、私の考えは、長いクリックを無効にしてそこに置くことでしたmDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);次に、mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);それを再び有効にしたいとき – Rainmaker