【问题标题】:Remove left margin from Android Toolbar从 Android 工具栏中删除左边距
【发布时间】:2020-04-02 19:19:21
【问题描述】:

我正在开发一个 android 应用程序,其中有导航抽屉可以导航到我的应用程序的其他部分。我已将 ActionBarDrawerToggle 默认汉堡图标更改为我自己的图标。我想将切换图标放在它的最左侧。所以我想去掉默认的16dp空间。

我想删除切换图标左侧的红色边框空间

我已经在互联网上搜索了 4 个多小时,但没有任何效果。我已经尝试了在 StackOverflow 中找到的所有内容,但没有一个有效。我还尝试将我的图标资源更改为其他图像,以确保我使用的图像没有任何错误。

此外,如果我从工具栏中删除切换图标,则工具栏的其他内容会自动到达最左侧,没有 16dp 的边距,但如果我添加切换图标,则会再次显示 16dp 空间。

此外,由于我的最低 sdk 版本是 18,所以我看到的一些需要最低 sdk 版本 21 的解决方案将不起作用。

唯一对我有用的是

    toolbar.setPadding(-16, 0, 0, 0);
    toolbar.setX(-16);

但是这里有一个问题,对于像平板电脑这样的大屏幕设备,切换图标会完全隐藏。所以任何人都可以帮我解决这个问题,下面是我正在使用的代码。

提前非常感谢

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    fm = getSupportFragmentManager();

    final DrawerLayout drawer = findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {

        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            super.onDrawerSlide(drawerView, slideOffset);
        }
    };

    drawer.addDrawerListener(toggle);
    toggle.setToolbarNavigationClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (drawer.isDrawerVisible(GravityCompat.START)) {
                drawer.closeDrawer(GravityCompat.START);
            } else {
                drawer.openDrawer(GravityCompat.START);
            }
        }
    });
    toolbar.setContentInsetsAbsolute(0, 0);
    toggle.setDrawerIndicatorEnabled(false);
    toggle.setHomeAsUpIndicator(R.mipmap.toggle);// my icon resource
    toggle.syncState();

我的工具栏xml文件是

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_gradient">

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

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/white"
        android:theme="@style/ThemeOverlay.AppCompat.Light"
        app:contentInsetLeft="0dp"
        app:contentInsetStart="0dp"
        app:contentInsetStartWithNavigation="0dp"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        app:subtitleTextColor="@color/black"
        app:titleTextColor="@color/black" />

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

</LinearLayout>
</RelativeLayout>

【问题讨论】:

    标签: java android xml toolbar android-togglebutton


    【解决方案1】:

    我认为你的代码:

        toolbar.setPadding(-16, 0, 0, 0);
        toolbar.setX(-16);
    

    不同的屏幕会有所不同,因为您使用的是像素 (px),并且它可以在不同的屏幕密度中发生变化,请尝试以下操作:

    toolbar.setPadding(-toPixels(betterValue), 0, 0, 0);
    toolbar.setX(-toPixels(betterValue));
    /*
    .
    .
    .
    */
    static int toPixels(float dip, Context context){
            Resources r=context.getResources();
            float densidade = r.getDisplayMetrics().density;
            return (int)(dip*densidade+0.5f);
    }
    

    我不知道这是否是更好的方法,但我希望这会有所帮助。

    【讨论】:

    • 感谢您的回答。为你+1。它在几乎没有屏幕变化的情况下都能完美运行,但我仍然在一些较大的设备中看到它显示出小问题
    猜你喜欢
    • 2015-09-12
    • 2016-11-13
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    相关资源
    最近更新 更多