[android] hide actionbar menuitem title balloon

요즘에는 액션바 메뉴는 아이콘만 하나 나오게 하는 게 유행이다. 최근에 안 건데, 아이콘만 표시해놔도  Long Click을 하면 타이틀을 표시하는 풍선도움말? 같은 게 나오게 된다.

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
  <item
    android:id="@+id/menu1"
    android:icon="@drawable/ic_cloud_upload_black_24dp"
    android:title="@null"
    app:showAsAction="always"/>
</menu>

 

 

이렇게 하면 저 말풍선이 뜨지 않는다.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.main_manu, menu);
  hideMenuLabel(menu);
  return super.onCreateOptionsMenu(menu);
}

protected void hideMenuLabel(final Menu menu) {
  new Handler().post(new Runnable() {
    @Override
    public void run() {
      for (int i = 0; i < menu.size(); i++) {
        final View v = findViewById(menu.getItem(i).getItemId());
        if(v != null) {
          v.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
              return false;
            }
          });
        }
      }
    }
  });
}

 

 

Lambda 를 적용하면 이렇게 짧아진다.

protected void hideMenuLabel(Menu menu) {
  new Handler().post(() -> {
    for (int i = 0; i < menu.size(); i++) {
      final View v = findViewById(menu.getItem(i).getItemId());
      if (v != null) {
        v.setOnLongClickListener(v1 -> false);
      }
    }
  });
}