Android - Padding/Gap слева от детского макета панели инструментов

125
11

Я застрял в проблеме, и я просмотрел весь интернет для решения, но ничего не работает для меня. Я добавил изображение в панель инструментов, но немного вправо. Он не выравнивается по центру, он немного смещается вправо. Когда я выровняю изображение влево, там есть неизвестное дополнение/зазор между изображением и левой стороной панели инструментов. Ниже приведен мой XML-код:

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

<android.support.design.widget.CoordinatorLayout 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"
android:fitsSystemWindows="true"
tools:context=".NavigationDrawerHomeScreen.BaseActivity">

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

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar_home_activity"
android:layout_width="match_parent"
android:layout_height="45dp"
android:contentInsetLeft="0dp"
android:contentInsetStart="0dp"
android:contentInsetStartWithNavigation="0dp"
android:minHeight="?attr/actionBarSize"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp">

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

<ImageView
android:id="@+id/logo_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/fixer_title_thick" />
</RelativeLayout>

<android.support.v7.widget.SearchView
android:id="@+id/search_home"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:showAsAction="ifRoom"
android:visibility="gone">

</android.support.v7.widget.SearchView>

</android.support.v7.widget.Toolbar>

</android.support.design.widget.AppBarLayout>

<FrameLayout

android:id="@+id/container_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/home_bg" />

</FrameLayout>

<!--<TextView-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_centerInParent="true"-->
<!--android:text="this is base" />-->

</android.support.design.widget.CoordinatorLayout>
</RelativeLayout>

<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:background="#2A2929"
android:backgroundTint="#2A2929"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_home_customer"
app:itemTextAppearance="@style/NavDrawerTextStyle"
app:itemTextColor="#fff"
app:menu="@menu/activity_home_customer_drawer">

<LinearLayout
android:id="@+id/footer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom"
android:clickable="true"
android:orientation="vertical">

<!-- any addition stuff you want in yoour footer layout -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="50dp"
android:orientation="vertical">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Set Search Radius"
android:textColor="@color/white" />

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:clipChildren="false">

<com.crystal.crystalrangeseekbar.widgets.CrystalSeekbar
android:id="@+id/rangeSeekbar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"

app:bar_color="@color/blue"
app:left_thumb_color="@color/blue_dark" />

<TextView
android:id="@+id/textMin1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/rangeSeekbar1"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="5dp"
android:text="0"
android:textColor="@color/white"
android:textSize="16dp" />

<TextView
android:id="@+id/textMax1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@id/rangeSeekbar1"
android:layout_marginEnd="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:text="100"
android:textColor="@color/white"
android:textSize="16dp" />

</RelativeLayout>
</LinearLayout>

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="#1E88E5">

<TextView
android:id="@+id/logout_footer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginBottom="20dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:drawableLeft="@drawable/ic_logout_white_24dp"
android:drawablePadding="32dp"
android:text="Logout"
android:textColor="#fff"
android:textSize="18sp" />
</RelativeLayout>
</LinearLayout>

</android.support.design.widget.NavigationView>

Приложение: contentinset/android: contentinset решение работает для некоторых людей, но оно не работает для меня.

здесь изображение http://imgur.com/a/Vp2g6.

спросил(а) 2021-01-25T12:16:51+03:00 4 месяца, 4 недели назад
1
Решение
76

У меня была такая же проблема, и я пробовал много вещей, таких как настройка

app:contentInsetStart ="0dp" ;

app:contentInsetStartWithNavigation = "0dp" ;

Это не сработало. Я даже установил их отрицательное значение, но это не сработало. Я попытался добавить правое поле к моему дочернему виду, но уменьшил видимый размер дочернего представления вместо того, чтобы занимать это левое пространство. Поэтому, возможно, в этом пространстве недопустимы представления детей.

Поэтому, потратив некоторое время, я решил, что есть два способа решения этой проблемы, один из них предпочтительнее другого, я бы не предпочел. Сначала позвольте мне рассказать вам то, что я не предпочитаю:

Пользовательская реализация кнопки "Вверх": эта проблема возникает только тогда, когда в вашем классе Java для этого макета вы устанавливаете эту панель инструментов в качестве своего ActionBar, и вы

setDisplayHomeAsUpEnabled(true); 

Без этой команды эта проблема не существует. Поэтому, если вы не используете кнопку возврата по умолчанию и не реализуете ее самостоятельно, поставив изображение и обеспечив реализацию onClick, это должно работать нормально.

Сделайте ChildViews скорее сиблингом: другой метод использует свойство панели инструментов, это просто другое представление. Я предпочитаю этот метод, потому что с помощью этого метода вы можете использовать кнопку андроида по умолчанию. Единственное, что вам нужно сделать, - это не определять дочерние представления внутри панели инструментов, сделать дочерний вид и панель инструментов в качестве родных или близких друг к другу в линейной или относительной компоновке. Таким образом вы можете уменьшить левое пространство только до "wrap_content" на панели инструментов и использовать левое пространство в других дочерних представлениях. В моем приложении у меня даже была функциональность onClick на панели инструментов, которая теперь может быть выполнена, предоставляя эту функциональность родителям обоих макетов, т.е. устанавливая onClick на LinearLayout.

Хотя я до сих пор не знаю точной причины, по которой существует левое пространство, или есть способ отключить его, но это довольно чистый метод, чтобы обойти это.

ответил(а) 2021-01-25T12:16:51+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема