Android 按下导航抽屉下方的按钮时不工作
然而,当按钮被放置在层次结构中,以便可以在导航抽屉的顶部看到它时,按钮可以正常工作。但是,当按钮滑出时,应将其隐藏在导航抽屉后面,因此这是不可取的 下面是来自MainActivity.java的代码Android 按下导航抽屉下方的按钮时不工作,android,android-intent,onclicklistener,navigation-drawer,Android,Android Intent,Onclicklistener,Navigation Drawer,然而,当按钮被放置在层次结构中,以便可以在导航抽屉的顶部看到它时,按钮可以正常工作。但是,当按钮滑出时,应将其隐藏在导航抽屉后面,因此这是不可取的 下面是来自MainActivity.java的代码 public class MainActivity extends ActionBarActivity implements NavigationDrawerCallbacks { public ProgressDialog progBar; public final static boolea
public class MainActivity extends ActionBarActivity implements NavigationDrawerCallbacks {
public ProgressDialog progBar;
public final static boolean DEBUG = false;
public final static String TAG = "AppGetter";
private Toolbar mToolbar;
private NavigationDrawerFragment mNavigationDrawerFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
mNavigationDrawerFragment = (NavigationDrawerFragment) getFragmentManager().findFragmentById(R.id.fragment_drawer);
mNavigationDrawerFragment.setup(R.id.fragment_drawer, (DrawerLayout) findViewById(R.id.drawer), mToolbar);
ImageButton cart_button = (ImageButton) findViewById(R.id.button2);
cart_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
start_request();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public void onNavigationDrawerItemSelected(int position) {
Toast.makeText(this, "Menu item selected -> " + position, Toast.LENGTH_SHORT).show();
}
@Override
public void onBackPressed() {
if (mNavigationDrawerFragment.isDrawerOpen())
mNavigationDrawerFragment.closeDrawer();
else
super.onBackPressed();
}
public void start_request()
{
String pkg = getPackageName();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName(pkg,pkg+".RequestActivity"));
startActivity(intent);
if(DEBUG)Log.v(TAG,"Intent intent: "+intent);
}
}
我假设问题在上面的类中,但是为了完成,我粘贴了下面两个感兴趣的XML文件
activity_main.xml如您所见,ImageButton当前位于层次结构中导航抽屉的“上方”,以便导航抽屉覆盖它。将ImageButton移动到“下方”可以使按钮正常工作,但会使其显示在导航抽屉的顶部(并且不像布局的其他部分那样着色)
fragment\u navigation\u drawer.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<!-- Provides a margin at the top of the navigation drawer. -->
<View
android:id="@+id/navWhiteSpace1"
android:layout_width="match_parent"
android:layout_height="64dp"
android:background="@color/myNavigationDrawerBackgroundColor"
/>
<android.support.v7.widget.RecyclerView
android:id="@+id/drawerList"
android:layout_below="@+id/navWhiteSpace1"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusableInTouchMode="true"
android:scrollbars="vertical"
android:scrollbarDefaultDelayBeforeFade="0"
android:scrollbarFadeDuration="0"
android:overScrollMode="never"
android:focusable="true"
android:background="@color/myNavigationDrawerBackgroundColor"/>
</RelativeLayout>
我在尝试在线学习各种导航抽屉教程时遇到了同样的问题 对我有用的是在GitHub上使用Mike Penz的库。他在页面底部的“自述”文件中有一个非常简单的教程
希望其他对Java有更好理解的人能够解释代码失败的原因。您能发布您正在使用的xml布局吗?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<!-- Provides a margin at the top of the navigation drawer. -->
<View
android:id="@+id/navWhiteSpace1"
android:layout_width="match_parent"
android:layout_height="64dp"
android:background="@color/myNavigationDrawerBackgroundColor"
/>
<android.support.v7.widget.RecyclerView
android:id="@+id/drawerList"
android:layout_below="@+id/navWhiteSpace1"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusableInTouchMode="true"
android:scrollbars="vertical"
android:scrollbarDefaultDelayBeforeFade="0"
android:scrollbarFadeDuration="0"
android:overScrollMode="never"
android:focusable="true"
android:background="@color/myNavigationDrawerBackgroundColor"/>
</RelativeLayout>