Ответ 1
Я нашел решение. Вы можете настроить область касания и сделать ее такой же широкой, как и ваш вид. Вот ссылка
Для раздвижного меню jfeinstein10 (https://github.com/jfeinstein10/SlidingMenu), я могу перемещаться в любом месте приложения, чтобы открыть меню.
В Google недавно представленном навигационном ящике http://developer.android.com/design/patterns/navigation-drawer.html#side-nav, есть ли способ, которым я могу иметь подобное поведение?
До сих пор из документации я видел, что она ограничивает только слайд от края или касание значка приложения.
Пользователь может принести навигационный ящик на экран, проверив с левого края экрана или прикосновением к значку приложения на панели действий.
Я нашел решение. Вы можете настроить область касания и сделать ее такой же широкой, как и ваш вид. Вот ссылка
Google, так как они говорят о своем учебнике "Если пользователь коснулся самого левого края экрана (в пределах 20 д.ф. слева)", похоже, что они не хотят этой функции.
См. http://developer.android.com/design/patterns/navigation-drawer.html
"Пользователь может принести навигационный ящик на экран, прокручивая его с левого края экрана или нажав значок приложения на панели действий."
Они не говорят и не прокручивают нигде на экране. Они также не имеют такой функциональности ни в одном из своих приложений (G +, Gmail и т.д.), Поэтому, если вы хотите использовать эту функциональность, вы, вероятно, должны придерживаться своего собственного (с жестами) или стороннего пользователя (например, jfeinstein10).
EDIT: Приложение Youtube позволяет прокручивать в любом месте, но версия, по крайней мере, (4.5.17) не похожа на то, что она использует их новый api.
Вы можете использовать этот
DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
Field mDragger = mDrawerLayout.getClass().getDeclaredField(
"mLeftDragger");//mRightDragger or mLeftDragger based on Drawer Gravity
mDragger.setAccessible(true);
ViewDragHelper draggerObj = (ViewDragHelper) mDragger
.get(mDrawerLayout);
Field mEdgeSize = draggerObj.getClass().getDeclaredField(
"mEdgeSize");
mEdgeSize.setAccessible(true);
int edge = mEdgeSize.getInt(draggerObj);
mEdgeSize.setInt(draggerObj, edge * 3);
Вы можете использовать GestureDetector
, чтобы сами обнаруживать подвижные жесты и просто открывать навигационный ящик самостоятельно, используя DrawerLayout.openDrawer()
.
Как говорили другие, и Чейни сказал в своем ответе - вероятно, лучше оставить его так, как предполагалось. Однако DrawerLayout
отличается от SlidingMenu
. Google также добавил SlidingPaneLayout
, который ближе к стилю SlidingMenu.
Я закончил тем самым реализацию SlidingPaneLayout
таким образом, поскольку это было больше того, что я искал в конце концов. (Это также стиль приложения YouTube/Hangouts)
<android.support.v4.widget.SlidingPaneLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/sliding_pane_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/left_pane"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"/>
</android.support.v4.widget.SlidingPaneLayout>
Затем, чтобы открыть домашнюю кнопку панели действий:
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action buttons
switch(item.getItemId()) {
case android.R.id.home:
if (mPaneLayout.isOpen())
mPaneLayout.closePane();
else
mPaneLayout.openPane();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Затем вы можете реализовать PanelSlideListener
для обработки, когда он сдвигается/открывается/закрывается.
Я предлагаю также прочитать серию Adam Powell в навигационном ящике - часть 3 переходит в использование SlidingPaneLayout vs Navigation Drawer:
Часть 1 - https://plus.google.com/+AdamWPowell/posts/2zi4DXd3jkm
Часть 2 - https://plus.google.com/+AdamWPowell/posts/VdgexsZeXHW
Часть 3 - https://plus.google.com/+AdamWPowell/posts/8j2GVw72i1E
Часть 4 - https://plus.google.com/+AdamWPowell/posts/TtBFUXhe5HU