본문 바로가기
안드로이드

[Android] Disable tooltip Text in Bottom Navigation View

by Banlim 2020. 12. 3.

[삽질의 기록]

 

Bottom Navigation View에서 각 아이템을 길게 클릭하면 tooltip text가 나오는 것을 발견했다.

이 기능이 거슬려서 해당 기능을 지우기 위해 열심히 구글링을 한 결과 해결했다.

 

우선, 메뉴 아이템이 다음과 같다고 가정하자.

 

res/menu/main_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:gom="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/bottom1"
        android:icon="@drawable/ic_baseline_access_time_24"
        android:title="text"
        gom:showAsAction="withText"
        />
    <item
        android:id="@+id/bottom2"
        android:icon="@drawable/ic_baseline_get_app_24"
        android:title="text"
        gom:showAsAction="withText"/>
    <item
        android:title=""
        gom:showAsAction="never"/>
    <item
        android:id="@+id/bottom3"
        android:icon="@drawable/ic_baseline_phone_24"
        android:title="text"
        gom:showAsAction="withText"/>
    <item
        android:id="@+id/bottom4"
        android:icon="@drawable/ic_baseline_shop_two_24"
        android:title="text"
        gom:showAsAction="withText"/>
</menu>

 

다음으로, BottomNavigationView를 그리는 코드에서 다음 함수를 넣는다.

이 함수내의 longClickListener는 long click event가 발생하면 return true를 함으로써 아무 이벤트도 일어나지 않도록 막는 역할을 한다.

이 Listener를 각 메뉴 아이템에 세팅한다.

    private void disableMenuTooltip(){
        View bottom1 = findViewById(R.id.bottom1);
        View bottom2 = findViewById(R.id.bottom2);
        View bottom3 = findViewById(R.id.bottom3);
        View bottom4 = findViewById(R.id.bottom4);

        View.OnLongClickListener longClickListener = new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                return true;
            }
        };

        bottom1.setOnLongClickListener(longClickListener);
        bottom2.setOnLongClickListener(longClickListener);
        bottom3.setOnLongClickListener(longClickListener);
        bottom4.setOnLongClickListener(longClickListener);
    }

 

마지막으로 이 disableMenuTooltip() 메소드를 onStart() 함수에 넣으면 길게 클릭해도 tooltip이 나오는 현상은 발생하지 않는다.

    @Override
    protected void onStart() {
        super.onStart();
        disableMenuTooltip();
    }