Android 메뉴 정의 및 ActionBar 구현

7610 단어 AndroidActionBar
Android 옵션 메뉴 는 Activity 의 메 인 메뉴 항목 입 니 다.

그 생 성 방식 은 두 가지 가 있다.
자바 코드 로 만 들 기XML 파일 에서 정의첫 번 째 방법:

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

  //    “    ”      
  final int FONT_10 = 0X111;
  final int FONT_12 = 0X112;
  final int FONT_14 = 0X113;
  final int FONT_16 = 0X114;
  final int FONT_18 = 0X115;
  //    “     ”   
  final int PLAIN_ITEM = 0x11b;
  //    “    ”      
  final int FONT_RED = 0X116;
  final int FONT_BLUE = 0X117;
  final int FONT_GREEN = 0X118;
  private EditText editText;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    editText = (EditText) findViewById(R.id.edit);


  }

  //     menu       
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
//     menu   “    ”    
    SubMenu fontMenu = menu.addSubMenu("    ");
//           
    fontMenu.setIcon(R.mipmap.ic_launcher);
//            
    fontMenu.setHeaderIcon(R.mipmap.ic_launcher_round);
//            
    fontMenu.setHeaderTitle("      ");
    fontMenu.add(0, FONT_10, 0, "10   ");
    fontMenu.add(0, FONT_12, 0, "12   ");
    fontMenu.add(0, FONT_14, 0, "14   ");
    fontMenu.add(0, FONT_16, 0, "16   ");
    fontMenu.add(0, FONT_18, 0, "18   ");
//     menu   “     ”
    menu.add(0, PLAIN_ITEM, Menu.NONE, "     ");
//     menu   “    ”    
    SubMenu colorMenu = menu.addSubMenu("    ");
    colorMenu.setIcon(R.color.colorPrimaryDark);
//            
    colorMenu.setHeaderIcon(R.color.colorAccent);
//            
    colorMenu.setHeaderTitle("      ");
    colorMenu.add(0, FONT_RED, 0, "  ");
    colorMenu.add(0, FONT_GREEN, 0, "  ");
    colorMenu.add(0, FONT_BLUE, 0, "  ");

    return super.onCreateOptionsMenu(menu);
  }

//                   
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
//               
    switch (item.getItemId()) {
      case FONT_10:
        editText.setTextSize(10 * 2);
        break;
      case FONT_12:
        editText.setTextSize(12 * 2);
        break;
      case FONT_14:
        editText.setTextSize(14 * 2);
        break;
      case FONT_16:
        editText.setTextSize(16 * 2);
        break;
      case FONT_18:
        editText.setTextSize(18 * 2);
        break;
      case FONT_RED:
        editText.setTextColor(Color.RED);
        break;
      case FONT_GREEN:
        editText.setTextColor(Color.GREEN);
        break;
      case FONT_BLUE:
        editText.setTextColor(Color.BLUE);
        break;
      case PLAIN_ITEM:
        Toast.makeText(MainActivity.this, "        ", Toast.LENGTH_SHORT).show();
        break;
    }
    return true;
  }
}

사용자 가 menu 키 를 누 르 면 onCreateOptionMenu()방법 이 실 행 됩 니 다.따라서 자신의 실현 이 필요 하 다 면 이 방법 을 다시 써 야 합 니 다.이 방법 은 menu 대상 에 전 달 됩 니 다.이 대상 의 add()방법 을 이용 하여 하위 메뉴 를 추가 할 수 있 습 니 다.마찬가지 로 하위 메뉴 도 add()방법 을 통 해 메뉴 항목 을 추가 할 수 있 습 니 다.
add()방법의 네 가지 매개 변수 중:
첫 번 째 매개 변 수 는 groupId 입 니 다.각 메뉴 항목 이 같은 그룹 에 있 는 지 여 부 를 제어 할 수 있 습 니 다.
두 번 째 인 자 는 itemId,즉 모든 메뉴 항목 의 Id 입 니 다.
세 번 째 매개 변 수 는 order 로 각 item 의 순 서 를 제어 합 니 다.순서 에 관심 이 없다 면,NONE 나 0 으로 들 어 갈 수 있다.대응 하 는 int 형식의 수치 가 작 을 수록 메뉴 항목 의 순서 가 위 에 있 습 니 다.order=1 과 같은 메뉴 항목 은 order=2 보다 위 에 있 습 니 다.
네 번 째 매개 변 수 는 title 입 니 다.메뉴 항목 의 제목 에 대응 합 니 다.
4.567917.각 메뉴 항목 은 일련의 setter 방법 에 대응 하고 말 그대로 하면 됩 니 다4.567917.메뉴 항목 을 클릭 한 후에 자신의 실현 이 필요 하 다 면 onOptionsItemSelected()방법 을 다시 써 야 합 니 다.이 방법 은 이미 만 든 menuItem 항목 에 전 달 됩 니 다.switch 를 이용 하면 모든 메뉴 항목 의 클릭 이벤트 에 대해 서로 다른 실현 을 제공 할 수 있 습 니 다자바 코드 로 각 메뉴 항목 을 실현 하 는 것 은 사고방식 에 더욱 적합 할 수 있 지만 코드 가 비대 해 지 는 경우 가 많다.
XML 에서 옵션 메뉴 를 정의 하 는 방법 을 소개 합 니 다.
XML 파일 에서 메뉴 를 정의 하려 면 먼저 자원 파일 에 menu 라 는 폴 더 를 만들어 야 합 니 다.
그리고 xml 파일 을 만 듭 니 다:

xml 파일 의 루트 노드 는 menu 여야 합 니 다.
그 중에서 각 item 탭 은 메뉴 항목 을 정의 하고에서를 정의 하 는 방식 으로 하위 메뉴 를 만 들 수 있 습 니 다.

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto">

  <item android:id="@+id/file"
    android:icon="@drawable/ic_insert_drive_file_white_24dp"
    android:title="@string/file"
    app:showAsAction="ifRoom"/>
  <item android:id="@+id/newOne"
    android:icon="@drawable/ic_create_new_folder_white_24dp"
    android:title="@string/newOne"
    app:showAsAction="ifRoom">

    <menu>
      <item android:id="@+id/save"
        android:title="@string/save"/>
      <item android:id="@+id/paste"
        android:title="@string/paste"/>
    </menu>
  </item>
</menu>

모든 아 이 템 은 많은 속성 을 정의 하 는 것 을 지원 합 니 다.그 중에서 가장 중요 한 것 은 id,icon,title 과 showAsAction 입 니 다.
앞의 세 가 지 는 모두 이해 하기 쉬 우 며,주로 쇼 AsAction 이 비교적 이해 하기 어렵다.showAsAction 의 값 은 다섯 개의 예비 옵션 이 있 고 조합 사용 을 지원 합 니 다:

android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
여기 서 먼저 하나의 개념 을 분명히 해 야 한다.

위의 그림 에서 보 듯 이 제목 과 두 개의 버튼 이 있 는 Action Bar 라 고 합 니 다.안 드 로 이 드 3.0 부터 소 개 돼 사용 됐다.시스템 은 기본적으로 ActionBar 를 도구 모음 으로 사용 합 니 다.Action Bar 의 item 은 두 가지 단추 와 넘 치 는 메뉴 로 표시 할 수 있 습 니 다.
안 드 로 이 드 메뉴 가 단순 메뉴 가 아니 라 는 것 이다.Action Bar 의 일부분 이 라 고 할 수 있 습 니 다.메뉴 항목 은 Action Bar 에서 단추 로 표시 할 수 있 습 니 다(쇼 AsAction 값 설정 을 통 해 이 루어 집 니 다).
다음 그림 에서 두 개의 아이콘 은 단 추 를 대표 하고 세 개의 세로 점 은 넘 치 는 메뉴 를 대표 합 니 다.

본론 으로 돌아 가면 쇼 AsAction 에 대한 값:
  • ifRoom 일 때 공간 이 있 으 면 표시 하 겠 다 는 뜻 이다.위의 코드 중 두 개가 모두 IfRoom 으로 정의 되면 두 개의 단추 로 표 시 됩 니 다
  • 4.567917.'never'는 말 그대로 버튼 을 표시 하지 않 는 다.모든 것 이 넘 치 는 메뉴 에 농축 되 어 있 습 니 다4.567917.'with Text'는 단 추 를 표시 할 때 텍스트 를 따 르 는 것 이다.그러나 텍스트 는 일반적으로 표시 되 지 않 습 니 다.사용자 가 단 추 를 길 게 누 르 면 해당 하 는 title 이 표 시 됩 니 다4.567917.'always'는'never'와 대응한다.항상 표시 되 기 때문에"always"를 최대한 적 게 사용 해 야 합 니 다4.567917.collapse Action View 는 toolbar(Action Bar 에 해당 하 는 업그레이드 버 전 으로 각 방면 에서 더욱 유연 하 다)와 관련 된 설정 으로 본 고의 주제 와 벗 어 나 더 이상 군말 하지 않 는 다.
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기