Soru Gezinme çekmecesi için açık menüyü kaydırmak için herhangi bir yere dokunun


Jfeinstein10 tarafından Kayar menü için (https://github.com/jfeinstein10/SlidingMenu), Menüyü açmak için uygulamada herhangi bir yere kaydırabilirim.

Google yeni tanıtılan navigasyon çekmecesi için http://developer.android.com/design/patterns/navigation-drawer.html#side-navbenzer davranışlarımın olması için herhangi bir yol var mı?

Şimdiye kadar, belgelere göre, sadece kenardan kayma veya uygulama simgesine dokunma sınırını gördüm.

Kullanıcı navigasyon çekmecesini ekrana kaydırarak ekrana getirebilir   Ekranın sol kenarından veya uygulama simgesine dokunarak   eylem çubuğunda.


21
2018-05-16 09:13


Menşei


Aynı şeyi yapmaya çalışıyorum ... SlidingMenu'ya benzer şekilde açmak için sürüklenebilecek bir kenar boşluğu ayarlamak istiyorum. Ben buraya postalandım stackoverflow.com/questions/16988597/... - Patrick


Cevaplar:


Bir çözüm buldum. Dokunma marjını yapılandırabilir ve görünümünüzün genişliğini yapabilirsiniz. Bağlantı burada

Android Gezinme Çekmecesi için sürükleme marjı ayarla


9
2017-07-23 06:12



hack, özellikle içeriği ViewPager olduğunda gerçekten çalışmıyor. NavigationDrawer ile sola doğru kaydırırken ViewPager, görünüm 1'den görünüm 1'e değişmez. Tüm olaylar, NavigationDrawer tarafından tüketilir. - Cheok Yan Cheng


Google, öğreticilerinin sözlerini şöyle yazar: "Eğer kullanıcı ekranın sol kenarına (soldan 20 dp) dokunuyorsa, bu işlevselliği istemiyor gibi görünüyor.

Görmek http://developer.android.com/design/patterns/navigation-drawer.html

"Kullanıcı, ekranın sol kenarından veya eylem çubuğundaki uygulama simgesine dokunarak gezinti çekmecesini ekrana getirebilir."

Ekranda herhangi bir yerden söyleme veya kaydırma yapmazlar. Ayrıca, herhangi bir uygulamasında (G +, Gmail, vb.) Bu işlevselliğe sahip değildirler. Bu nedenle, eğer bu işlevselliği istiyorsanız, muhtemelen kendi (hareketlerle) veya üçüncü taraf (örneğin, jfeinstein10) yazmanız gerekir.

DÜZENLE: Youtube uygulaması, herhangi bir yere kaydırmanıza izin veriyor ancak en azından sahip olduğum sürüm (4.5.17) yeni api'lerini kullanıyor gibi görünmüyor.


10
2018-06-17 16:18



Bu. Şimdi resmi bir tasarım deseni var, onu takip etmek en iyisidir. Kullanıcılar navigasyon çekmecelerini kullanmak için resmi yollara alışacak ve tüm uygulamaların bunu takip etmesini bekleyecektir. - Teovald


Bunu kullanabilirsiniz

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); 

5
2017-11-04 09:19





Diğerleri söyledikleri gibi, ve Cheney onun cevabında söyledi - muhtemelen amaçlandığı gibi bırakmak en iyisidir. Ancak DrawerLayout farklı bir stil SlidingMenu. Google ayrıca ekledi SlidingPaneLayout hangi SlidingMenu tarzı daha yakından eşleşir.

Hayata geçirmeyi bitirdim SlidingPaneLayout Bu şekilde, daha sonra aradığım şeyden daha çok olduğu gibi. (Bu ayrıca YouTube / Hangouts uygulamasının tarzıdır)

<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>

Daha sonra eylem çubuğu ana düğmesiyle açmak için:

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);
    }
}

Daha sonra bir uygulayabilirsiniz PanelSlideListener kayarken / açık / kapalı iken

Navigasyon çekmecesinde Adam Powell'ın serilerini de okumanızı tavsiye ediyorum - 3. bölüm SlidingPaneLayout vs Navigasyon Çekmecesini kullanmaya başladı:

Bölüm 1 - https://plus.google.com/+AdamWPowell/posts/2zi4DXd3jkm

Bölüm 2 - https://plus.google.com/+AdamWPowell/posts/VdgexsZeXHW

Bölüm 3 - https://plus.google.com/+AdamWPowell/posts/8j2GVw72i1E

Bölüm 4 - https://plus.google.com/+AdamWPowell/posts/TtBFUXhe5HU


3
2018-06-17 17:19





Sen kullanabilirsin GestureDetector Kayma hareketlerini kendiniz tespit etmek ve sadece Navigasyon Çekmecesini kullanarak DrawerLayout.openDrawer() yöntem.


2
2018-06-11 18:09



Bunu düşündüm ama bu ideal değil. Parmağınızı izleyen kademeli sürtünme yerine, sadece çekmeceyi hemen açacaksınız. İdeal olarak aynı davranışı varsayılan olarak ister (Aksi takdirde SlidingMenu uygulaması gibi bir şey için gidiyorum) - bbedward
Google nihayetinde bu tür bir navigasyon öğesi için standart bir çözüm buldukça, en azından tutarlılık uğruna onu yapımcıların istediği şekilde kullanmanın en iyi yolu olacağını düşünüyorum. Uygulamanızın farklı bir şekilde davranması için gerçekten ihtiyacınız varsa, DrawerLayout'u tasarlanmadığı şekilde bükmeye çalışmak yerine, muhtemelen SlidingMenu veya benzerlerini kullanmalısınız. - Ridcully
Sağdaki sesler, bir SlidingPaneLayout gibi görünen şey daha çok olabilir. - bbedward