我有一个应用程序可以覆盖 的onTouchEvent(MotionEvent ev)来MainActivity确定Two-Finger-Swipe和Pich-Open/ Pinch-Close。一切正常,直到我将其添加到应用程序中(就像创建导航抽屉DrawerLayout中所述)。问题:阻止在 MainActivity 中调用。DrawerLayoutonTouchEvent()
我开始编写CustomDrawerLayout, 并尝试重写DrawerLayout方法onInterceptTouch()和onTouchEvent()。
TouchEvent(我发现)将其传输到 MainActivity 的唯一方法:
// onTouchEvent of CustomDrawerLayout
@Override
public boolean onTouchEvent(MotionEvent ev){
// super.onTouchEvent(ev); // prevent transmission of TouchEvent
return false;
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是抽屉无法正确打开。抽屉卡住了,如这篇文章中所述: DrawerLayout getting 卡在 swipe 上。
是否可以将 传输TouchEvent到 MainActivity 来处理 MultiTouchDetection?或者我必须处理这个问题CustomDrawerLayout?
更新1
首先,我不得不说,如果我从左边缘滑动,抽屉只会卡住。通过单击ActionBar抽屉中的抽屉图标,效果很好。TouchEvent使用以下代码传输作品。但前提是抽屉打开了!否则Activity.onTouchEvent不叫!
// onTouchEvent of …Run Code Online (Sandbox Code Playgroud) 我正在学习如何使用Android的导航抽屉.我在布局xml文件中创建了一个relativeLayout,并将两个部分(FrameLayout和Listview)放在RelativeLayout中.但是我收到以下错误:
java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.slidingtest/com.slidingmenu.MainActivity}:java.lang.IllegalArgumentException:查看android.widget.RelativeLayout@423c0dc0不是滑动抽屉
我找到了这个网页,但仍无法解决我的问题.有人可以帮帮我吗?谢谢...
这是我的MainActivity.java
public class MainActivity extends Activity {
private DrawerLayout mDrawerLayout;
private RelativeLayout relativeLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
private CharSequence mDrawerTitle;
private CharSequence mTitle;
private String[] navMenuTitles;
private TypedArray navMenuIcons;
private ArrayList<NavDrawerItem> navDrawerItems;
private NavDrawerListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
relativeLayout = (RelativeLayout)findViewById(R.id.sv_left_menu);
mTitle = mDrawerTitle = getTitle();
navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
navMenuIcons = getResources().obtainTypedArray(R.array.nav_drawer_icons);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.list_slidermenu); …Run Code Online (Sandbox Code Playgroud) 我一直在尝试在DrawerLayout中设置一个EditText框,但仔细阅读Android培训网站,他们解释说DrawerLayout只允许有两个子视图.如果我想做下一个代码,我应该如何处理它?
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- The navigation drawer -->
<EditText
android:id="@+id/EditText01"
android:layout_width="240dp"
android:layout_height="match_parent"
android:hint="Search" >
</EditText>
<ListView android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud) android android-layout android-support-library navigation-drawer drawerlayout
所以我正在努力将ActionBarSherlock和导航抽屉添加到以前实现自定义(写得很差)"动作栏"的项目中.一些活动不是使用片段和后台活动进行导航,而是显示和隐藏不同的布局.(也就是说,假设我处于列表模式,然后选择一个按钮进入编辑屏幕.应用程序当前隐藏列表布局并显示另一个布局.).
所以我在所有活动中添加了actionbar sherlock和导航抽屉.我希望能够以编程方式在按下某些按钮时将导航图标从3行切换到箭头.

我无法弄清楚如何做到这一点.有任何想法吗?
谢谢!
我正在关注这篇文章http://derekrwoods.com/2013/09/creating-a-static-navigation-drawer-in-android/
我希望在横向模式下打开抽屉.这是我的onCreate函数.
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activity_order);
drawerList = (ListView) findViewById(R.id.left_drawer);
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
FrameLayout frameLayout = (FrameLayout) findViewById(R.id.content_frame);
if (((ViewGroup.MarginLayoutParams) frameLayout.getLayoutParams()).leftMargin == (int) getResources()
.getDimension(R.dimen.drawer_size)) {
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
drawerLayout.setScrimColor(Color.TRANSPARENT);
isDrawerLocked = true;
}
// Set the adapter for the list view
// drawerItems = getResources().getStringArray(R.array.drawerOptions);
drawerItems = DummyContent.ITEMS
.toArray(new DummyItem[DummyContent.ITEMS.size()]);
drawerList.setAdapter(new ArrayAdapter<DummyItem>(this,
android.R.layout.simple_list_item_1, drawerItems));
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout,
R.drawable.ic_drawer, R.string.action_short,
R.string.action_short) {
/** Called when a drawer has settled in a completely closed state. …Run Code Online (Sandbox Code Playgroud) 工具栏未出现在棒棒糖前设备上.我正在使用工具栏的抽屉布局.相同的工具栏适用于其他活动,但与抽屉布局一起使用时则不适用.
带抽屉布局和工具栏的活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_screen);
{
/*supportChatImageButton = (ImageButton) findViewById(R.id.homeSupportChatImageButton);
orderImageButton = (ImageButton) findViewById(R.id.homeOrderImageButton);*/
headerTextView = (TextView) findViewById(R.id.homeHeaderTextView);
slidingTabLayout = (SlidingTabLayout) findViewById(R.id.homeSlidingTabLayout);
viewPager = (ViewPager) findViewById(R.id.homeViewPager);
headerBackgroundImageView = (ImageView)findViewById(R.id.homeHeaderBackgroundImageView);
mainContentLayout = (FrameLayout) findViewById(R.id.homeScreenMainContentLayout);
hamburgerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
hamburgerLinearLayout = (LinearLayout) findViewById(R.id.hamburgerProfileLayout);
hamburgerListView = (ListView) findViewById(R.id.hamburgerListView);
hamburgerMenu = (RelativeLayout) findViewById(R.id.hamburgerMenu);
GetHamburgerListItems();
HamburgerListAdapter hamburgerListAdapter = new HamburgerListAdapter(this, hamburgerListItems);
hamburgerListView.setAdapter(hamburgerListAdapter);
userProfileImageView = (ImageView) findViewById(R.id.userProfileImageView);
userProfileNameTextView = (TextView) findViewById(R.id.userProfileNameTextView);
if(StorageManager.read(this, "userProfile", new TypeToken<UserProfile>() {}.getType()) != null) {
UserProfile userProfile …Run Code Online (Sandbox Code Playgroud) android android-appcompat navigation-drawer drawerlayout android-toolbar
我的活动NavigationView里面有一个DrawerLayout.
当用户点击NavigationView标题中的按钮时,我想滚动到顶部DrawerLayout/NavigationView带有动画.
看起来NavigationView和DrawerLayout没有提供获取实际滚动位置的方法(getScrollY()并且getScrollX()总是返回0),所以我不能这样做.
如何使用动画滚动到顶部?
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<!-- My content -->
<android.support.design.widget.NavigationView
android:id="@+id/navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/navigation_view_header"
app:menu="@menu/my_navigation_items" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud) android scroll android-animation drawerlayout android-navigationview
在我的Android应用程序中,我看到以下错误:
setDrawerListener(android.support.v4.widget.Drawer Layout.DrawerListener)'已弃用
我怎么解决这个问题?
在一个答案中,我看到使用addDrawerListener()相反,setDrawerListener但它似乎没有用.
我正在使用Google Design Support Library和DrawerLayout.
建立:
final DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
NavigationView drawer = (NavigationView) findViewById(R.id.drawer);
if(mDrawerToggle == null) {
mDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, mToolbar, R.string.open, R.string.feather_close);
drawerLayout.addDrawerListener(mDrawerToggle);
mDrawerToggle.syncState();
}
Run Code Online (Sandbox Code Playgroud)
当我启动我的应用程序时,会显示汉堡包图标的涟漪效果,但抽屉未打开.当我从左侧滑动至少一次打开抽屉时,汉堡包图标适用于整个运行时.切换按钮或抽屉本身没有特殊的监听器,并且未调用onOptionsItemSelected方法.
请帮我看看会发生什么.
谢谢.
我正在尝试向Android Studio中的现有项目添加导航菜单.但是,按照官方网站上的说明,我<android.support.v4.widget.DrawerLayout ...在我的视图的其余部分添加了一个标记,并在主要活动布局的主ConstraintLayout下,我将示例导航绘制放在其下面:
<android.support.design.widget.NavigationView
android:id="@+id/navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/my_navigation_items" />
Run Code Online (Sandbox Code Playgroud)
最后一行在构建时会导致一些问题:
Error:error: attribute 'com. ... :menu' not found.
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚为什么会这样.所述app的部分app:menu中的DrawerLayout标签中定义为:xmlns:app="http://schemas.android.com/apk/res-auto"
这似乎也会导致Cannot resolve symbol R我的MainActivity.java文件中出现错误.
无论如何,非常感谢任何帮助!