Action Bar에는 항상 메뉴의 "·"을, 하위 메뉴에는 아이콘을 표시합니다.

10054 단어 AndroidActionBar

배경.



Action BarSherlock과 Support Library의 Action BarActivity를 사용하면 안드로이드 2.x도 액션 바가 있는 액티비티를 만들 수 있지만, 물리적 메뉴 키가 있는 터미널은 액션 바에'····'(이른바 three dots)가 표시되지 않는다.
안드로이드 디자인 가이드에서 옳은 행동이라고 생각하고, 개인적으로는 그래도 괜찮다고 생각합니다.지원 노력이 많이 들고(화면 오른쪽에'···'버튼이 있으면 매번 그걸 누르고 없으면 터미널 메뉴 버튼 설명을 누르고) 그래서 자주 뜨면 귀찮아서 조사를 해봤어요.
겸사겸사 위의 화면 캡처처럼 부메뉴에 아이콘을 추가했기 때문에 메뉴 항목이 이해하기 쉽다는 장점이 있다.
잡담하자면, 만약 사용자에게 "터미널의 메뉴 단추를 누르십시오"라고 알려주면, "메뉴 단추는 무엇입니까?"이런 문제도 있다.다음은 그런 세계에서 통용되는 허구의 작품이라고 생각한다면.

실현 방법


showAsction = "always"의 icaction_하위 메뉴로 메뉴 항목을 만드는 오버플로우 단추를 표시합니다.
res/menu/main_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:yourapp="http://schemas.android.com/apk/res-auto" >

    <!-- トップページ -->
    <item
        android:id="@+id/menu_toppage"
        android:icon="@drawable/icon32_ic_menu_home"
        android:title="トップページ"
        yourapp:showAsAction="always"/>

    <!-- 共有 -->
    <item
        android:id="@+id/menu_share"
        android:icon="@drawable/icon32_dummy_space"
        android:title="共有"
        yourapp:showAsAction="always"/>

    <!-- Options -->
    <item
        android:id="@+id/overflow_options"
        android:icon="@drawable/ic_action_overflow_dark"
        android:title="Menu"
        yourapp:showAsAction="always">
        <menu>

            <!-- ブラウザで開く -->
            <item
                android:id="@+id/menu_share_by_browser"
                android:icon="@drawable/icon32_dummy_space"
                android:title="ブラウザで開く"
                yourapp:showAsAction="never"/>

            <!-- URLの確認 -->
            <item
                android:id="@+id/menu_show_url"
                android:icon="@drawable/icon32_dummy_space"
                android:title="URLの確認"
                yourapp:showAsAction="never"/>

            <!-- ページ内検索 -->
            <item
                android:id="@+id/menu_text_find_start"
                android:icon="@drawable/icon32_dummy_space"
                android:title="ページ内検索"
                yourapp:showAsAction="never"/>
...
        </menu>
    </item>

</menu>
※ 일본인을 위한 앱이기 때문에android:title 속성에 직접 적어 문자열 자원을 준비해야 합니다.
※ android: icon 속성 @drawable/icon32dummy_스페이스를 사용하는 것은 실행할 때 onProepare Options Menu에서 IconicDroid 아이콘을 바꾸기 위해서입니다.
MainActivity.java
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        final MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);

        mainMenu = menu;

        return super.onCreateOptionsMenu(menu);
    }
자세한 내용은 Stackoverflow의 이 대답.를 참조하십시오.ic_action_링크에도 오버플로우 등 자원이 있다.

메뉴 단추를 눌렀을 때의 하위 메뉴 표시


위의 물리 메뉴 키만 눌러도 부메뉴가 나타나지 않기 때문에 스스로 처리할 수도 있다.
    private Menu mainMenu;
...
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        final MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);

        mainMenu = menu;

        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
...
        final int action = event.getAction();
        final int keyCode = event.getKeyCode();
        if (action == KeyEvent.ACTION_UP) {
            // メニュー表示
            if (keyCode == KeyEvent.KEYCODE_MENU) {
                if (mainMenu != null) {
                    mainMenu.performIdentifierAction(R.id.overflow_options, 0);
                }
                return true;
            }
        }
...
    }

참고 자료

  • Android action bar not showing overflow - Stack Overflow
  • 좋은 웹페이지 즐겨찾기