【问题标题】:blank space left even after setting match_parent即使在设置 match_parent 之后也留下空白
【发布时间】:2018-12-14 07:50:22
【问题描述】:

我已经创建了一个带有导航抽屉和菜单的工具栏,现在我试图在同一个工具栏上添加一个 textView 和 edittext 并将它们放在中心,但问题是当我添加相对布局并将宽度设置为匹配时parent,它会在左侧租用一些空间,并将要放置在中心的项目向右移动。

我已经粘贴了下面的代码:-

<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="130dp"
android:theme="@style/AppTheme.AppBarOverlay">


<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="?attr/colorPrimary">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="H E A D"
            android:textSize="30dp"
            android:layout_centerHorizontal="true"
            android:textStyle="bold"
            android:id="@+id/ToolbarTextView"
            style="@style/Base.TextAppearance.AppCompat.Large"
            android:layout_marginTop="9dp"
            android:textColor="@color/colorwhite"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/ToolbarTextView"
            android:layout_centerHorizontal="true"
            android:text="Tagline"
            android:textSize="15dp"
            android:textColor="@color/colorwhite"/>

        <EditText
            android:layout_width="292dp"
            android:layout_height="wrap_content"
            android:background="@drawable/main_search"
            android:padding="7dp"
            android:backgroundTint="@color/colorwhite"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="10dp"
            android:hint="Search..."
            android:id="@+id/ToolbarSearch1"/>

    </RelativeLayout>

</android.support.v7.widget.Toolbar></android.support.design.widget.AppBarLayout><include layout="@layout/content_main" /><android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@android:drawable/ic_dialog_email" />

mainActivity的xml代码:-

<android.support.constraint.ConstraintLayout
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:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.strease.user.strease.MainActivity"
android:id="@+id/layout4"
tools:showIn="@layout/app_bar_main">


<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:paddingTop="5dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/></android.support.constraint.ConstraintLayout>

参考图如下:-

设备截图如下:-

P.S:- 我需要省略空格并将 editText 和 textViews 放到布局的中心(目前向右移动)

主Activity中的导航抽屉代码:-

  <android.support.v4.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/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start"><include
    layout="@layout/app_bar_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_main"
    app:menu="@menu/activity_main_drawer"/></android.support.v4.widget.DrawerLayout>

【问题讨论】:

    标签: android android-layout android-actionbar


    【解决方案1】:
    android:fitsSystemWindows="false"
    

    【讨论】:

    • 我已经做到了,但是editText(如图所示)仍然不在布局的中心,它仍然向右移动
    【解决方案2】:
    app:contentInsetEnd="0dp"  
    app:contentInsetLeft="0dp"  
    app:contentInsetRight="0dp"  
    app:contentInsetStart="0dp"
    

    尝试在工具栏中添加以上四行。它将解决您的问题。并使您的子布局在宽度 match_parent 和高度 wrap_content 内。并将您的子子视图对齐中心设置为水平。它会解决你的问题。

    如果仍然不能解决您的问题,请使用包含的布局完全更新您的布局的 XML 文件,以便我们可以找出您的布局到底存在什么问题。

    【讨论】:

    • 我已经做了所有事情,但问题还是一样。在 Android 工作室中......它显示所有内容都在中心对齐,但是当我在真实设备上运行它时。 editText 仍然向右倾斜。
    • 我还添加了 app:contentInsetStartWithNavigation="0dp" 仍然没有任何改变
    • 您是否使用设备中的布局边界检查过您的视图到底出了什么问题。如果可能,请尝试使用布局绑定视图上传设备的屏幕截图。并更正确地更新您的 XML,以便我们可以正确检查它。
    【解决方案3】:

    您需要将此属性添加到工具栏以删除该空间。

    android:contentInsetEnd="0dp"
    android:contentInsetLeft="0dp"
    android:contentInsetRight="0dp"
    android:contentInsetStart="0dp"
    app:contentInsetEnd="0dp"
    app:contentInsetLeft="0dp"
    app:contentInsetRight="0dp"
    app:contentInsetStart="0dp"
    

    喜欢如下。

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:contentInsetEnd="0dp"
        android:contentInsetLeft="0dp"
        android:contentInsetRight="0dp"
        android:contentInsetStart="0dp"
        app:contentInsetEnd="0dp"
        app:contentInsetLeft="0dp"
        app:contentInsetRight="0dp"
        app:contentInsetStart="0dp"
        android:background="?attr/colorPrimary">
    

    这将从工具栏中删除默认的剩余空间。

    这是屏幕截图。 Edit Text 似乎显示在 Toolbar 的确切 center 中。还将您的 minSdkVersion 更新为 21 肯定会起作用。

    这是布局代码。

    <android.support.design.widget.AppBarLayout 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="130dp"
        android:background="@android:color/holo_red_light"
        android:theme="@style/AppTheme.AppBarOverlay">
    
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="?attr/colorAccent"
            android:contentInsetEnd="0dp"
            android:contentInsetLeft="0dp"
            android:contentInsetRight="0dp"
            android:contentInsetStart="0dp"
            app:contentInsetEnd="0dp"
            app:contentInsetLeft="0dp"
            app:contentInsetRight="0dp"
            app:contentInsetStart="0dp">
    
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent">
    
                <TextView
                    android:id="@+id/ToolbarTextView"
                    style="@style/Base.TextAppearance.AppCompat.Large"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="9dp"
                    android:text="H E A D"
                    android:textColor="@android:color/white"
                    android:textSize="30dp"
                    android:textStyle="bold" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/ToolbarTextView"
                    android:layout_centerHorizontal="true"
                    android:text="Tagline"
                    android:textColor="@android:color/white"
                    android:textSize="15dp" />
    
                <EditText
                    android:id="@+id/ToolbarSearch1"
                    android:layout_width="292dp"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:layout_centerHorizontal="true"
                    android:layout_marginBottom="10dp"
                    android:background="@android:color/white"
                    android:backgroundTint="@android:color/white"
                    android:hint="Search..."
                    android:padding="7dp" />
    
            </RelativeLayout>
    
        </android.support.v7.widget.Toolbar>
    
    
        <include layout="@layout/content_main" />
    
        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_margin="@dimen/fab_margin"
            app:srcCompat="@android:drawable/ic_dialog_email" />
    </android.support.design.widget.AppBarLayout>
    

    编辑

    导航图标添加另一个属性到工具栏

    app:contentInsetStartWithNavigation="0dp"
    

    现在您的工具栏应该如下所示。

    <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="?attr/colorAccent"
            android:contentInsetEnd="0dp"
            android:contentInsetLeft="0dp"
            android:contentInsetRight="0dp"
            android:contentInsetStart="0dp"
            app:contentInsetEnd="0dp"
            app:contentInsetLeft="0dp"
            app:contentInsetRight="0dp"
            app:contentInsetStartWithNavigation="0dp"
            app:contentInsetStart="0dp">
    

    编辑 2

    我已经对您的 layout 进行了一些更改,使用 Linear Layout 而不是 Relative Layout

    <android.support.design.widget.AppBarLayout 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="130dp"
        android:background="@android:color/holo_red_light"
        android:theme="@style/AppTheme.AppBarOverlay">
    
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="?attr/colorAccent"
            android:contentInsetEnd="0dp"
            android:contentInsetLeft="0dp"
            android:contentInsetRight="0dp"
            android:contentInsetStart="0dp"
            app:contentInsetEnd="0dp"
            app:contentInsetLeft="0dp"
            app:contentInsetRight="0dp"
            app:contentInsetStartWithNavigation="0dp"
            app:contentInsetStart="0dp">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:gravity="center"
                android:orientation="vertical">
    
                <TextView
                    android:id="@+id/ToolbarTextView"
                    style="@style/Base.TextAppearance.AppCompat.Large"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:text="H E A D"
                    android:textColor="@android:color/white"
                    android:textSize="30dp"
                    android:textStyle="bold" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Tagline"
                    android:layout_marginTop="2dp"
                    android:textColor="@android:color/white"
                    android:textSize="15dp" />
    
                <EditText
                    android:id="@+id/ToolbarSearch1"
                    android:layout_width="292dp"
                    android:layout_height="wrap_content"
                    android:background="@android:color/white"
                    android:layout_marginTop="3dp"
                    android:backgroundTint="@android:color/white"
                    android:hint="Search..."
                    android:padding="7dp" />
    
            </LinearLayout>
    
        </android.support.v7.widget.Toolbar>
    
    
        <include layout="@layout/content_main" />
    
        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_margin="@dimen/fab_margin"
            app:srcCompat="@android:drawable/ic_dialog_email" />
    </android.support.design.widget.AppBarLayout>
    

    【讨论】:

    • 我已经尝试过......但它并没有完全解决我的问题......它省略了空格但是如果你在图像中查看我有一个editText并且我已经通过了 layout_centerHorinzontal=" true" 但是editText仍然有点偏右并且不完全在中心
    • @jpsingh 它与您的代码一起显示在中心,在添加了该属性后,它似乎按预期工作,请仔细检查!!。我正在分享 SS 检查更新的答案。
    • 我知道先生,即使在 Android Studio 中它也显示在中心,但是当在设备或模拟器上运行时,它会向右移动一点......我不知道为什么会发生这种情况但是是不是因为导航抽屉的 3 行标志?
    • @jpsingh 该屏幕截图是真实设备的!你可以看到更新的答案。还要确保您的 minSdkVersion 应该是 21 因为这些属性在低于该值时将不起作用。
    • @jpsingh 现在按照上面的建议和 cmets 工作了吗?
    猜你喜欢
    • 2021-08-03
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    相关资源
    最近更新 更多