Как сделать постоянный навигационный ящик в Android?

У меня много поиска, но я легко управляю навигацией, но в настоящее время мне нужно реализовать постоянный ящик навигации.

https://www.google.com/design/spec/patterns/navigation-drawer.html#navigation-drawer-behavior

Please let me know the process to Manage or Sample Tutorial of **Persistent Navigation Drawer** shown in below Image. LinkedIn Android Application is using the same navigation drawer.

введите здесь описание изображения

Спасибо


person Akarsh M    schedule 26.06.2015    source источник
comment
Ящик постоянной навигации? У вас есть учебник по Persistent Navigation drawer?   -  person Psypher    schedule 26.06.2015
comment
Это не NavigationDrawer. Для этого вам нужно реализовать это самостоятельно или вы можете использовать некоторую библиотеку, которая это поддерживает.   -  person Xaver Kapeller    schedule 26.06.2015
comment
@Ranjith: я еще не нашел. Спасибо   -  person Akarsh M    schedule 26.06.2015
comment
@XaverKapeller: google.com/design/spec /узоры/   -  person Akarsh M    schedule 26.06.2015
comment
@XaverKapeller: Пожалуйста, взгляните на это. Спасибо   -  person Akarsh M    schedule 26.06.2015
comment
Да, это спецификация NavigationDrawer, что вы хотите, чтобы я увидел?   -  person Xaver Kapeller    schedule 26.06.2015
comment
Не могли бы вы дать мне подсказку, как я могу начать с этого. Спасибо @XaverKapeller   -  person Akarsh M    schedule 26.06.2015
comment
С чем? Что ты хочешь делать?   -  person Xaver Kapeller    schedule 26.06.2015
comment
К.. так вы спрашиваете навигационный ящик, который всегда отображается и не может быть скрыт   -  person Psypher    schedule 26.06.2015


Ответы (2)


Я реализовал «Ящик постоянной навигации» через ViewPager и отлично работает, как мне нужно.

Просто используйте ширину 0,8f в PagerAdaper/FragmentPagerAdapter.

@Override
public float getPageWidth(int position) {
    // TODO Auto-generated method stub
    if (position == 0) {
        return .8f;
    }
    return 1f;
}
person Akarsh M    schedule 02.07.2015
comment
Не могли бы вы опубликовать полный пример здесь? Спасибо ! - person slaadvak; 06.07.2015
comment
Нет, я закончил использовать другое решение. - person slaadvak; 17.08.2015
comment
@slaadvak: Не могли бы вы поделиться своим способом, как вы этого добиваетесь? - person Akarsh M; 18.08.2015

Мой XML-файл:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:facebook="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <!-- Framelayout to display Fragments -->

    <RelativeLayout
        android:id="@+id/mainView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

    </RelativeLayout>

    <!-- Listview to display slider menu -->

    <RelativeLayout
        android:id="@+id/drawerView"
        android:layout_width="240dp"
        android:layout_height="wrap_content"
        android:layout_gravity="start" >

        <ListView
            android:id="@+id/list_slidermenu"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/list_background"
            android:divider="@color/list_divider"
            android:dividerHeight="1dp" />
    </RelativeLayout>
</android.support.v4.widget.DrawerLayout>

Моя деятельность:

public class ProfileActivity extends ActionBarActivity {
    ....
    private DrawerLayout mDrawerLayout;
    private ActionBarDrawerToggle mDrawerToggle;

    RelativeLayout drawerView;
    RelativeLayout mainView;
    ....

    @Override
    protected void onCreate(Bundle savedInstanceState) {


        ............. //
        .............//
        drawerView = (RelativeLayout) findViewById(R.id.drawerView);
        mainView = (RelativeLayout) findViewById(R.id.mainView);

        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.app_name, R.string.app_name) {
            public void onDrawerClosed(View view) {
                supportInvalidateOptionsMenu();
            }

            public void onDrawerOpened(View drawerView) {
                supportInvalidateOptionsMenu();
            }

            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                super.onDrawerSlide(drawerView, slideOffset);
                mainView.setTranslationX(slideOffset * drawerView.getWidth());
                mDrawerLayout.bringChildToFront(drawerView);
                mDrawerLayout.requestLayout();


            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);}
}

Код внутри onDrawerSlide даст вам то, что вы хотите.

person atish naik    schedule 29.05.2016
comment
Это решение не оправдывает вопрос. Он просто смещает основной вид за пределы экрана, пока ящик открывается. То, что требуется (на основе документации по материалам), заключается в том, чтобы оба представления функционировали одновременно. - person Odys; 08.05.2017