物料导航抽屉页脚一直位于抽屉顶部

时间:2020-02-15 11:30:40

标签: android android-layout navigation-drawer

我已遵循以下示例https://github.com/MarcDahlem/AndroidSidemenuFooterExample将自定义页脚添加到导航抽屉布局中。

它工作正常,并且除“页脚”布局之外的所有布局都显示在“导航抽屉”的顶部。即使在“布局预览”中,它也显示在底部。我的代码看不到任何问题。 GitHub的作者也检查了代码,但没有找到原因的运气。

这就是我得到的:

enter image description here

我尝试了各种布局,但所有内容均显示在顶部。

这是我的布局代码:

<androidx.drawerlayout.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/consumer_drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".Ui.Consumer.Profile"
    tools:openDrawer="start">

    <include
        layout="@layout/consumer_profile"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.google.android.material.navigation.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true">

        <androidx.core.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fillViewport="true"
            android:scrollbars="vertical">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <com.google.android.material.navigation.NavigationView
                    android:id="@+id/consumer_navbar"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/dark"
                    app:elevation="0dp"
                    app:itemBackground="@drawable/menu_selected"
                    app:itemTextColor="@color/white"
                    app:menu="@menu/nav_menu_consumer" />

                <LinearLayout
                    android:id="@+id/spacer_to_bottom"
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:orientation="vertical" />

                <include layout="@layout/bottom_navigation_items"></include>

            </LinearLayout>
        </androidx.core.widget.NestedScrollView>

    </com.google.android.material.navigation.NavigationView>


</androidx.drawerlayout.widget.DrawerLayout>

我无法绕过代码的错误之处。任何帮助都将非常棒

我的Java类:

public class Profile extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
    DrawerLayout drawerLayout;
    NavigationView navigationView;
    Toolbar support_toolbar;
    ImageView edit_profile_btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_consumer_profile);
        drawerLayout = findViewById(R.id.consumer_drawer_layout);
        navigationView = findViewById(R.id.consumer_navbar);
        support_toolbar = findViewById(R.id.profile_toolbar);
        edit_profile_btn = findViewById(R.id.edit_profile_btn);
        setSupportActionBar(support_toolbar);
        navigationView.setItemIconTintList(null);

        navigationView.bringToFront();
        NavigationMenuView navMenuView = (NavigationMenuView) navigationView.getChildAt(0);
        navMenuView.addItemDecoration(new DividerItemDecoration(Profile.this, DividerItemDecoration.VERTICAL));
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawerLayout, support_toolbar, R.string.nav_open, R.string.nav_close);
        drawerLayout.addDrawerListener(toggle);
        toggle.syncState();
        Objects.requireNonNull(getSupportActionBar()).setHomeButtonEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeAsUpIndicator(R.drawable.btn_menu_white);
        navigationView.setNavigationItemSelectedListener(this);
        navigationView.setCheckedItem(R.id.nav_profile);
        TextView view = (TextView) navigationView.getMenu().findItem(R.id.nav_profile).getActionView();
        view.setText(R.string.consumer);

        edit_profile_btn.setOnClickListener(v -> {
            Intent i = new Intent(Profile.this, EditProfile.class);
            startActivity(i);
        });

        disableNavigationViewScrolling(navigationView);

    }

    @Override
    public void onBackPressed() {

        if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
            drawerLayout.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }

    }

    private void disableNavigationViewScrolling(NavigationView navigationView) {
        if (navigationView != null) {
            NavigationMenuView navigationMenuView = (NavigationMenuView) navigationView.getChildAt(0);
            if (navigationMenuView != null) {
                navigationMenuView.setNestedScrollingEnabled(false);
            }
        }
    }

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {

        switch (item.getItemId()) {
            case R.id.nav_support:
                Intent intent_support = new Intent(this, Support.class);
                startActivity(intent_support);
                break;

            case R.id.nav_setting:
                Intent intent_setting = new Intent(this, Setting.class);
                startActivity(intent_setting);
                break;

            case R.id.nav_profile:
                Intent intent_profile = new Intent(this, Profile.class);
                startActivity(intent_profile);
                break;
            case R.id.nav_favourites:
                Intent intent_favourites = new Intent(this, Favourites.class);
                startActivity(intent_favourites);
                break;

        }
        drawerLayout.closeDrawer(GravityCompat.START);
        return true;
    }
}

以及自定义页脚布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="bottom"
    android:orientation="vertical"
    android:paddingBottom="16dp"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="16dp"
    android:background="@color/dark">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:weightSum="3"
        android:orientation="horizontal">
        <LinearLayout
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:orientation="vertical">
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/menu_setting"
            android:paddingBottom="2dp"
            android:layout_gravity="center_horizontal"/>
        <com.google.android.material.textview.MaterialTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:textAlignment="center"
            android:textColor="@color/white"
            android:text="@string/settings"/>
        </LinearLayout>
        <LinearLayout
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/menu_support"
                android:paddingBottom="2dp"
                android:layout_gravity="center_horizontal"/>
            <com.google.android.material.textview.MaterialTextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:textAlignment="center"
                android:textColor="@color/white"

                android:text="@string/support"/>
        </LinearLayout>
        <LinearLayout
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/menu_logout"
                android:paddingBottom="2dp"
                android:layout_gravity="center_horizontal"/>
            <com.google.android.material.textview.MaterialTextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/white"
                android:layout_gravity="center_horizontal"
                android:textAlignment="center"
                android:text="@string/logout"/>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

0 个答案:

没有答案