티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

Android: remove left margin from actionbar's custom layout

안드로이드: 액션바의 커스텀 레이아웃에서 왼쪽 여백 제거하기

 문제 내용 

I am using a custom actionbar view, and as you can see in the screenshot below, there is a blank gray space in the actionbar. I want to remove it.

저는 커스텀 액션바 뷰를 사용하고 있는데, 아래 스크린샷에서 볼 수 있듯이 액션바에 빈 회색 공간이 있습니다. 이 공간을 제거하고 싶습니다.

enter image description here

What have I done:

제가 한 일:

 

res/values-v11/styles.xml

<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
        <item name="android:actionBarStyle">@style/ActionBarStyle</item>
        <item name="actionBarStyle">@style/ActionBarStyle</item>
</style>

 

res/values/my_custom_actionbar.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
        <item name="android:height">60dp</item>
    </style>
</resources>

 

Manifest

<uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="19" />

<application
            android:icon="@drawable/ic_launcher"
            android:label="@string/AppName"
            android:theme="@style/AppBaseTheme" >
    <!-- activities... etc -->
</application>

 

MainActivity

public void onCreate(Bundle bundle) {
    super.onCreate(bundle);

    ActionBar actionbar = getSupportActionBar();

    actionbar.setDefaultDisplayHomeAsUpEnabled(false);
    actionbar.setDisplayHomeAsUpEnabled(false);
    actionbar.setDisplayShowCustomEnabled(true);
    actionbar.setDisplayShowHomeEnabled(false);
    actionbar.setDisplayShowTitleEnabled(false);
    actionbar.setDisplayUseLogoEnabled(false);
    actionbar.setHomeButtonEnabled(false);

    // Add the custom layout
    View view = LayoutInflater.from(this).inflate(R.layout.actionbar, null, false);
    actionbar.setCustomView(view);
}

 

I have found a recent post, that is pointing out that there is an issue with the latest release. I have also updated ADT and SDK to Android 5.

최근 글을 찾아봤습니다. 그 글에서는 최신 릴리스에 문제가 있다는 것을 지적하고 있었습니다. 또한 ADT와 SDK를 안드로이드 5로 업데이트했습니다.

 

Android ActionBar's custom view not filling parent

안드로이드 액션바의 커스텀 뷰가 부모를 채우지 않는 문제가 발생합니다.

 

I don't know what should I do.

어떻게 해야 할지 모르겠어요.

 

Edit (partial solution):

편집(부분 솔루션):

 

Not working on Android <= API 10.

Android <= API 10에서 작동하지 않습니다.

 

Android Lollipop, AppCompat ActionBar custom view doesn't take up whole screen width

Android Lollipop, AppCompat ActionBar 사용자 지정 보기가 전체 화면 너비를 차지하지 않습니다

 

What have I changed:

내가 바꾼 것은 무엇인가:

 

Use the latest sdk version:

최신 sdk 버전 사용:
<uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="21" />

 

Add a toolbarStyle:

toolbarStyle 추가:
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
        <item name="android:actionBarStyle">@style/ActionBarStyle</item>
        <item name="actionBarStyle">@style/ActionBarStyle</item>

        <item name="android:toolbarStyle">@style/ToolbarStyle</item>
        <item name="toolbarStyle">@style/ToolbarStyle</item>
</style>

<style name="ToolbarStyle" parent="@style/Widget.AppCompat.Toolbar">
    <item name="contentInsetStart">0dp</item>
    <item name="android:contentInsetStart">0dp</item>
</style>

 

 

 높은 점수를 받은 Solution 

If you are adding the Toolbar via XML, you can simply add XML attributes to remove content insets.

XML을 통해 툴바를 추가하고 있다면, 콘텐츠 인셋(content inset)을 제거하는 XML 속성을 추가할 수 있습니다.
<android.support.v7.widget.Toolbar
    xmlns:app="schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/primaryColor"
    android:contentInsetLeft="0dp"
    android:contentInsetStart="0dp"
    app:contentInsetLeft="0dp"
    app:contentInsetStart="0dp"
    android:contentInsetRight="0dp"
    android:contentInsetEnd="0dp"
    app:contentInsetRight="0dp"
    app:contentInsetEnd="0dp" />

 

 

 가장 최근 달린 Solution 

Just add app:contentInsetStart="0dp" to the XML attribute of the toolbar.

툴바의 XML 속성에 app:contentInsetStart="0dp"을 추가하면 됩니다.

 

 

 

출처 : https://stackoverflow.com/questions/27354812/android-remove-left-margin-from-actionbars-custom-layout

반응형
댓글
공지사항
최근에 올라온 글