Android API 21 툴바 패딩


193

Android SDK API 버전 21 (지원 라이브러리)이 포함 된 새로운 툴바에서 추가 패딩을 제거하려면 어떻게해야합니까?

이 그림의 빨간색 화살표에 대해 이야기하고 있습니다. 여기에 이미지 설명을 입력하십시오

사용중인 코드는 다음과 같습니다.

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

        <RelativeLayout
            android:id="@+id/action_bar_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="0dp"
            android:padding="0dp"
            android:background="#000000">

            <Spinner
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>

        </RelativeLayout>
</Toolbar>

보시다시피 모든 관련 패딩을 0으로 설정했지만 Spinner 주위에 여전히 패딩이 있습니다. 추가 패딩을 제거하기 위해 내가 뭘 잘못했거나 어떻게해야합니까?

편집 일부 내가 이렇게 노력하고 있어요 왜 의문을 제기했다.

머티리얼 디자인 사양에 따라 스피너는 왼쪽에서 72dp 여야합니다. 디스크

스피너를 올바르게 배치하기 위해 Google이 넣은 패딩을 중화해야합니다. 디스크

편집 2

아래의 Chris Bane의 답변에 따라 contentInsetStart를 0으로 설정했습니다. 지원 라이브러리의 경우 앱 네임 스페이스를 사용해야합니다.

<android.support.v4.widget.DrawerLayout
    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.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:minHeight="@dimen/action_bar_height"
        android:background="?attr/colorPrimary"
        android:contentInsetStart="0dp"
        android:contentInsetLeft="0dp"
        app:contentInsetLeft="0dp"
        app:contentInsetStart="0dp"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

</android.support.v4.widget.DrawerLayout>

나는 이것이 누군가를 돕기를 희망하며, 며칠 동안 혼란스러워했다.


4
상단 / 하단 패딩도 제거 했습니까? 나는 시도했지만 모든 contentInsetX속성을 0dp로 설정해도 아무 일도 일어나지 않습니다 .
— patrickjason91

@ patrickjason91과 비슷하게 툴바 내에서 ImageView를 툴바 상단 (이미지에는 w, h : wrap_content가 있음)과 정렬 할 수 있습니까? 내가 모든 것을려고하지만 ... 내 목표는 도구 모음의 상단에서 "매달려"북마크 리본 이미지 같은 것을하는 것입니다 만들 수 없습니다, 내기가 일부 패딩 내가 그것을 제거 할 수 있음을 항상있다
— Ewoks

답변:


280

왼쪽 삽입은 툴바에 의해 발생 contentInsetStart하며 기본적으로 16dp입니다.

키라 인에 맞추려면 이것을 72dp로 변경하십시오.

지원 라이브러리 v24.0.0 업데이트 :

머티리얼 디자인 사양과 일치시키기 위해 contentInsetStartWithNavigation기본적으로 16dp 인 추가 속성 이 있습니다. 탐색 아이콘이있는 경우이를 변경하십시오.


정말 감사합니다. 패딩과 여백에서 멀어지면 조금 이상해 보입니다. 이것은 안드로이드 5입니까?
— James Cross

1
contentInsetStart는 도구 모음에서 제공하는 UI (예 : 탐색 아이콘)에서 삽입하는 데 사용됩니다.
— Chris Banes

그리고 라디오 버튼을 툴바의 아이콘에 어떻게 정렬합니까? 비슷한 문제가 있습니다 : stackoverflow.com/questions/26623042/…
— Ferran

제목 패딩 titleMarginStart의 ATTR도있다
— 일탈

2
설정 contentInsetStartWithNavigation지원-V4와 나를 위해 0으로 트릭 않았다 25.0.1
— 쿠엔틴 G.

145

위의 답변은 정확하지만 여전히 문제를 일으킬 수있는 것이 있습니다 (적어도 나를 위해 문제를 만들었습니다)

다음을 사용했는데 구형 장치에서 제대로 작동하지 않습니다.

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

요령은 다음과 같습니다.

app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"

제거하십시오-

android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"

이제 모든 장치에서 제대로 작동합니다.

도움이 되길 바랍니다.


이것이 기본 동작 일 수 있습니다. 감사합니다 =)
— Luciano Rodríguez

2
CollapsingToolBarLayout에서 작동하지 않습니다. 도와주세요.
— Aslam Hossin

android : padding = "0dp"추가하면 도움이되었습니다.
— AITAALI_ABDERRAHMANE

1
4가, 위에서 언급과 함께 app:contentInsetStartWithNavigation이미 충분하지 않은 경우 힘 도움말 수정 일을
— computingfreak

10

툴바에이 두 줄을 추가하면됩니다. 그런 다음 기본적으로 16dp라는 새로운 왼쪽 공간 bcoz가 제거됩니다.

android:contentInsetStart="0dp"
app:contentInsetStart="0dp"

9

다른 사람이 여기에서 우연히 발견 되는 경우 다음과 같이 패딩 을 설정할 수 있습니다 .

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

int padding = 200 // padding left and right

toolbar.setPadding(padding, toolbar.getPaddingTop(), padding, toolbar.getPaddingBottom());

또는 contentInset :

toolbar.setContentInsetsAbsolute(toolbar.getContentInsetLeft(), 200);

패딩을 dp로 변환하고 디스플레이 밀도를 고려할 필요는 없습니다.
— 누군가 어딘가에

3

여기 내가 한 일이 있으며 모든 Android 버전에서 완벽하게 작동합니다.

toolbar.xml

<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"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:background="@color/primary_color"
    app:theme="@style/ThemeOverlay.AppCompat"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

    <TextView
        android:id="@+id/toolbar_title"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="16dp" <!-- Add margin -->
        android:layout_marginStart="16dp"
        android:gravity="left|center"
        android:text="Toolbar Title" <!-- Your title text -->
        android:textColor="@color/white" <!-- Matches default title styles -->
        android:textSize="20sp"
        android:fontFamily="sans-serif-medium"/>

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

MyActivity.java (기본 도구 모음 제목을 숨기려면)

getSupportActionBar().setDisplayShowTitleEnabled(false); // Hide default toolbar title

키라 인이 표시된 결과

여기에 이미지 설명을 입력하십시오


3

툴바를 다음과 같이 만드십시오.

<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/menuToolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="0dp"
android:background="@color/white"
android:contentInsetLeft="10dp"
android:contentInsetRight="10dp"
android:contentInsetStart="10dp"
android:minHeight="?attr/actionBarSize"
android:padding="0dp"
app:contentInsetLeft="10dp"
app:contentInsetRight="10dp"
app:contentInsetStart="10dp"></android.support.v7.widget.Toolbar>

당신은 추가해야합니다

contentInset

간격을 추가하는 속성

자세한 내용은이 링크를 참조하십시오 -Android Tips


3

의 조합

android:padding="0dp" 툴바의 xml에서

과

mToolbar.setContentInsetsAbsolute(0, 0) 코드에서

이것은 나를 위해 일했습니다.


1

이것은 내 Android 7.11 전화에서 작동합니다.

<!-- TOOLBAR -->
<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:contentInsetStartWithNavigation="0dp">

    <TextView
        style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
        android:id="@+id/toolbar_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/create_account_title"
        android:textColor="@color/color_dark_grey"/>

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

참고 : padding = 0, contentInsetLeft = 0 또는 contentInsetStart = 0으로는 절대 성공하지 못했습니다.


0

그렇다면 72dp가 필요하다면 XML 파일에서 패딩의 차이를 추가 할 수 없었습니까? 이런 식으로 당신은 우리가 사용하기 원하는 안드로이드의 기본 삽입 / 패딩을 유지합니다.

따라서 : 72-16 = 56

따라서 : 56dp 패딩을 추가하여 총 72dp의 들여 쓰기 / 여백에 빠지게하십시오.

또는 Dimen.xml 파일의 값을 변경할 수도 있습니다. 그것이 제가 지금하고있는 일입니다. 새로운 적절한 Android 방식으로 구현되면 ToolBar를 포함하여 모든 레이아웃과 전체 레이아웃이 변경됩니다.

Dimen 리소스 파일

내가 추가 한 링크는 Dimen 값을 2dp로 변경했기 때문에 표시하지만 기본 값은 16dp로 설정되어 있습니다. 참고로 ...


-2
((Toolbar)actionBar.getCustomView().getParent()).setContentInsetsAbsolute(0,0);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.