[android] ActionBar의 홈 아이콘과 제목 사이의 패딩

아무도 ActionBar의 홈 아이콘과 제목 사이에 패딩을 설정하는 방법을 알고 있습니까?



답변

나는 Cliffus 대답을 수정하고 내 액션 바 스타일 정의에 로고 드로어 블을 할당했습니다. 예를 들어 res / style.xml에서 다음과 같습니다.

<item name="android:actionBarStyle">@style/MyActionBar</item>

<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">#3f51b5</item>
        <item name="android:titleTextStyle">@style/ActionBar.TitleText</item>
        <item name="android:textColor">#fff</item>
        <item name="android:textSize">18sp</item>
        <item name="android:logo">@drawable/actionbar_space_between_icon_and_title</item>
</style>

드로어 블은 res / drawable / actionbar_space_between_icon_and_title.xml에서 Cliffus의 것과 비슷합니다 (여기에는 기본 앱 실행기 아이콘이 있음).

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/ic_launcher"
        android:right="20dp"/>
</layer-list>

android_manifest.xml에서 여전히 다른 앱 아이콘 ( ‘데스크톱’의 런처 아이콘)을 설정할 수 있습니다. 여기에서 다른 로고 정의는 작업 표시 줄이없는 활동에서 볼 수 있습니다.


답변

편집 :이 드로어 블을 일부 댓글 작성자와 같이 앱 아이콘이 아닌 LOGO 로 설정했는지 확인하십시오 .

XML을 드로어 블로 만들고 리소스 폴더 “드로어 블”(밀도 또는 기타 구성없이)에 넣으십시오.

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:drawable="@drawable/my_logo"
        android:right="10dp"/>


</layer-list>

마지막 단계는이 새로운 드로어 블을 매니페스트 (또는 활동의 Actionbar 개체)의 로고로 설정하는 것입니다.

행운을 빕니다!


답변

저도 비슷한 문제에 직면했습니다. 제 경우에는 콘텐츠에 따라 각 활동에 제목을 동적으로 설정해야했습니다.

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

actionBar.setTitle("  " + yourActivityTitle);

원하는 것이 간격뿐이라면 이것이 제가 생각할 수있는 가장 쉬운 해결책입니다.


답변

이것이 제가 홈 아이콘과 제목 사이의 패딩을 설정하는 방법입니다.

ImageView view = (ImageView)findViewById(android.R.id.home);
view.setPadding(left, top, right, bottom);

그래도 ActionBar xml 스타일을 통해 이것을 사용자 정의하는 방법을 찾을 수 없습니다. 즉, 다음 XML은 작동하지 않습니다.

<style name="ActionBar" parent="android:style/Widget.Holo.Light.ActionBar">
    <item name="android:titleTextStyle">@style/ActionBarTitle</item>
    <item name="android:icon">@drawable/ic_action_home</item>
</style>

<style name="ActionBarTitle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textSize">18sp</item>
    <item name="android:paddingLeft">12dp</item>   <!-- Can't get this padding to work :( -->
</style>

그러나 xml을 통해이를 달성하려는 경우 다음 두 링크가 솔루션을 찾는 데 도움이 될 수 있습니다.

https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/styles.xml

(이것은 작업 표시 줄에 홈 아이콘을 표시하는 데 사용되는 실제 레이아웃입니다.)
https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/action_bar_home.xml


답변

이것은 머티리얼 디자인에서 자주 묻는 질문입니다. 툴바 제목을 아래 부분의 내용과 일치시킬 수 있기 때문입니다. 이렇게하려면 아래와 같이 toolbar.xml 레이아웃에서 contentInsetStart = “72dp” 속성을 사용하여 “12dp”의 기본 패딩을 재정의 할 수 있습니다.

toolbar.xml

<?xml version="1.0" encoding="utf-8"?>
<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="wrap_content"
    android:background="@color/app_theme_color"
    app:contentInsetStart="72dp"/>

그런 다음 활동에서

Toolbar toolbar = (Toolbar) activity.findViewById(R.id.toolbar);
toolbar.setTitle("Title Goes Here");

그리고 당신은 이것으로 끝납니다.

툴바


답변

나를 위해 다음 조합 만 작동했으며 API 18에서 24까지 테스트되었습니다.

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

여기서 “app”은 다음과 같습니다. xmlns:app="http://schemas.android.com/apk/res-auto"

예를 들면.

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


답변

AppCompat (android.support.v7.widget.Toolbar,> = 수정 버전 24, 2016 년 6 월 24 일)에서 툴바를 사용하는 경우 다음 값으로 아이콘과 제목 사이의 패딩을 변경할 수 있습니다.

  app:contentInsetStartWithNavigation="0dp"

내 대답을 개선하기 위해 활동 내 도구 모음에서 직접 사용하거나 도구 모음에 대한 새 레이아웃 파일을 만들 수 있습니다. 이 경우 필요한 각 뷰에서 include 속성을 사용하여 툴바의 @id를 가져 오기만하면됩니다.

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:elevation="4dp"
    app:contentInsetLeft="0dp"
    app:contentInsetStart="0dp"
    app:contentInsetStartWithNavigation="0dp">
</android.support.v7.widget.Toolbar>

그런 다음 activity.xml에서 레이아웃을 가져올 수 있습니다.

<include
        layout="@layout/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>