[안드로이드] setDisplayShowCustomEnabled()는 뭐하는 함수인가?

프로그래밍/Android 관련2018. 1. 30. 14:47

안녕하세요. 개발자 드리머즈입니다.


안드로이드에서 툴바Toolbar를 다루다 setDisplayShowCustomEnabled()라는 함수를 발견했습니다.


1
2
3
4
Toolbar mToolbar = (Toolbar) findViewById(R.id.main_toolbar);
setSupportActionBar(mToolbar);
 
getSupportActionBar().setDisplayShowCustomEnabled(ture); //커스터마이징 하기 위해 필요
cs


정확하게 뭐하는 함수인지 몰라 찾아봤습니다. 

안드로이드 디벨로퍼 사이트에 의하면 아래와 같은 설명이 있습니다.

Set whether a custom view should be displayed, if set.

To set several display options at once, see the setDisplayOptions methods.

커스텀 뷰를 보여줄 지 말 지를 정하는 함수라고 합니다. 그런데 이 정보로는 정확하게 무슨 말인지 잘 모르겠습니다. 좀 더 정보를 찾아보겠습니다.


여기에서 아래의 정보를 찾았습니다.


To download a sample app about creating a custom view in the ActionBar to show a Done button, see Android DoneBar Sample.


 Android DoneBar Sample에 가면 아래의 설명이 있습니다.

API 11 introduced the ActionBar as a navigational UI element. In most cases, a custom view isn't required or even recommended, as using a menu xml file is all that is needed to add action icons to it. However, it is possible to use a custom view and it is useful in some cases.


대부분의 경우 커스텀 뷰는 필요가 없고 심지어 추천되지 않는다고 합니다. 왜냐하면 메뉴 xml 파일을 사용하는 것만 하면 액션바ActionBar에 액션 아이콘을 추가할 수 있기 때문입니다. 하지만 커스텀 뷰를 사용하는 것은 가능하고 어떤 경우에는 도움이 된다고 합니다.



위의 사진에 빨간 색으로 표시한 것이 액션바 안에 사용된 커스텀 뷰입니다. 이 커스텀 뷰를 사용하기 위해서 필요한 함수가 setDisplayShowCustomEnabled()라고 합니다. 제가 보기에도 실제로 앱 바에서 커스텀 뷰를 사용할 일은 거의 없을 것 같습니다. 


그런데 신기한 점은 앱바의 타이틀 중앙 정렬을 하기 위해 사용하는 xml 코드에서 아래처럼 Toolbar 내부에 <TextView>를 사용하는 경우가 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="@color/gonggaPink"
    android:minHeight="?attr/actionBarSize"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    >
 
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Toolbar Title"
        android:layout_gravity="center"
        android:id="@+id/toolbar_title"
        android:textSize="20sp"
        />
 
</android.support.v7.widget.Toolbar>
cs


이 내부의 <TextView>는 커스텀 뷰에 속하지 않는 것인지 setDisplayShowCustomEnabled(false)로 해도 <TextView>는 잘 보이네요.


작성자

Posted by 드리머즈

관련 글

댓글 영역