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.