메뉴
이 섹션 소개:
이 장에서는 Android의 메뉴(메뉴)에 대해 설명하며, Android의 메뉴는 다음과 같습니다.
- OptionMenu: 옵션 메뉴, 안드로이드에서 가장 일반적인 메뉴 , 메뉴를 사용하세요 호출 키
- SubMenu: 하위 메뉴 Android에서 하위 메뉴를 클릭하면 하위 메뉴 항목을 표시하는 부동 상자가 나타납니다. 하위 메뉴는 중첩을 지원하지 않습니다. 즉, 다른 하위 메뉴를 포함할 수 없습니다
- ContextMenu: 컨텍스트 메뉴, 보기 구성 요소를 길게 누르면 나타나는 메뉴, 해당 구성 요소는 컨텍스트 메뉴를 등록해야 합니다. 이번 섹션에서는 Yiyi에서 이러한 메뉴를 사용하는 방법을 알아 보겠습니다~ 추신: 공식 문서: menus
1.OptionMenu(옵션 메뉴)
1) OptionMenu를 사용하는 방법은 무엇입니까?
답변: 매우 간단합니다. 두 가지 메소드를 다시 작성하면 됩니다. 실제로 이 두 가지 메소드는 프로젝트를 생성할 때 자동으로 생성됩니다~
- public boolean onCreateOptionsMenu(메뉴 메뉴): OptionMenu 호출, 여기에서 메뉴 초기화 완료
- public boolean onOptionsItemSelected(MenuItem 항목): 메뉴 항목이 선택되면 트리거되고, 여기서 이벤트 처리가 완료됩니다
물론, 재정의할 수 있는 위의 두 가지 메서드 외에도 다음 세 가지 메서드도 재정의할 수 있습니다.
- public void onOptionsMenuClosed(메뉴 메뉴): 이 메서드는 메뉴가 닫힐 때 호출됩니다
- public boolean onPrepareOptionsMenu(메뉴 메뉴): 이 메소드는 옵션 메뉴가 표시되기 전에 호출됩니다. 여기에서 메뉴를 조정할 수 있습니다(메뉴 목록을 동적으로 로드)
- public boolean onMenuOpened(int featureId, Menu menu): 이 메서드는 옵션 메뉴가 열린 후 호출됩니다
로드하는 방법에는 두 가지가 있습니다. menu, one 첫 번째 방법은 메뉴 XML 파일을 직접 작성한 다음 다음을 호출하는 것입니다. getMenuInflater().inflate(R.menu.menu_main, menu);메뉴 로드 또는 onCreateOptionsMenu의 매개변수 메뉴인 코드를 통해 동적으로 추가하고, add 메소드를 호출하여 추가합니다. 메뉴, 추가(그룹번호, ID, 정렬번호, 메뉴항목 제목)을 추가하고, 정렬번호를 추가된 순서대로 정렬하면 0만 입력하면 됩니다!
2) 사용 예:
렌더링 실행:
코드 구현:
MainActivity.java:
//1.정답하지 않은 색상의 菜单项的标识:
final private int RED = 110;
final private int GREEN== 111;
final private int BLUE = 112;
final private int YELLOW = 113;
final private int GRAY= 114;
final private int CYAN= 115;
final private int BLACK= 116;
private TextView tv_test;
@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_test = (TextView) findViewById(R.id.tv_test);
}
@Override
public boolean onCreate 옵션메뉴(메뉴 메뉴) {
// 팽창 메뉴; 이렇게 하면 작업 표시줄에 항목이 추가됩니다.
menu.add(1,RED,4,"红color");
menu.add(1,GREEN,2,"绿color");
menu.add(1 ,BLUE,3,"蓝color");
menu.add(1,YELLOW,1,"黄color");
menu.add(1,GRAY,5,"灰color");
menu.add(1, CYAN,6,"蓝绿color");
menu.add(1,BLACK,7,"黑color");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// 작업 처리 막대 항목이 여기를 클릭합니다. 작업 표시줄은
//홈/위 버튼 클릭을 자동으로 처리합니다. 따라서 오랫동안
//AndroidManifest.xml에서 상위 활동을 지정합니다.
int id = item.getItemId();
스위치(id){
case RED:
tv_test.setTextColor(Color.RED);
break;
케이스 GREEN:
tv_test.setTextColor(Color.GREEN);
break;
케이스 BLUE:
tv_test.setTextColor(Color.BLUE);
break;
케이스 노란색:
tv_test.setTextColor(Color.YELLOW); ㅋㅋㅋ ㅋㅋㅋ _test.setTextColor(Color.BLACK);
break;
}
return super.onOptionsItemSelected(item);
}
}
코드 분석:
위 코드는 Android 5.0의 OptionMenu(옵션 메뉴)에 메뉴를 동적으로 추가하는 방법을 보여줍니다. 그리고 이벤트 처리는 ID를 기준으로 사용자가 어떤 항목을 클릭했는지 판단하고 해당 작업을 수행합니다! 또한, 한 가지 주목할 점은 옵션 메뉴가 세 가지 전환 단계를 거쳤다는 것입니다. Android 2.3.x 이하 버전에서는 현 단계의 대부분의 모델에 메뉴키가 있기 때문에, 이 단계에서 메뉴 버튼을 클릭하면
메뉴가 나타납니다. Android 3.0 이상에서는 3.0에 도입된 ActionBar의 설정 메뉴입니다.
툴바에서 클릭하면 오버플로 메뉴 스타일이 나타납니다
또한 XML을 통해 메뉴를 정의하기 위해 간단한 참조 코드를 게시합니다:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/new_game "
android:icon="@drawable/ic_new_game"
android:title=" android icon="@drawable/ic_help"
android:title="@string/help" />
</menu>
기타 분들은 직접 문서를 확인해주세요~
2.ContextMenu (컨텍스트 메뉴)
앞에서 View를 길게 눌렀을 때 나타나는 메뉴는 이 View에 대한 컨텍스트 메뉴를 등록해야 한다고 말씀드렸는데요!
1) ContextMenu를 어떻게 사용하나요?
답변: 프로세스는 다음과 같습니다.
- 1단계: onCreateContextMenu() 메서드 다시 작성
- 2단계: 보기 구성 요소에 대한 컨텍스트 메뉴를 등록하고, RegisterForContextMenu() 메서드를 사용하고, 매개변수 is View
- 3단계: 메뉴 항목에 대한 이벤트 리스너를 지정하기 위해 onContextItemSelected() 메서드를 다시 작성합니다.
위의 OptionMenu에서는 Java 코드 메서드를 사용하여 메뉴 항목 추가를 완료합니다. XML 파일을 사용하세요 또한, 메뉴를 생성하기 위해 Java 코드를 사용할지, 아니면 XML을 사용하여 메뉴를 생성할지에 관해, 메뉴를 정의하려면 후자를 사용하는 것이 좋습니다. 이렇게 하면 Java 코드의 코드 팽창을 줄일 수 있고 매번 코드 할당을 사용할 필요가 없습니다. id의 경우, 메뉴의 내용을 수정하려면 XML 파일만 수정하면 되며, 이는 어느 정도 더 나은 디커플링을 제공합니다. 낮은 결합도, 높은 응집력, 맞죠~
2) 사용 예:
Running renders:
구현 코드:
먼저 옵션 메뉴의 메뉴 XML 파일을 작성해 보겠습니다.
menu_context.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/ android">
<!-- 라디오 버튼 세트 정의 -->
<!-- checkableBehavior에는 세 가지 선택적 값이 있습니다. 단일은 라디오 선택으로 설정되고, 모두는 다중 선택으로 설정되며, 없음 공통 옵션입니다 -->
+ :title="@string/font_green"/>
/>
</group>
</menu>
그런 다음 옵션 메뉴를 기반으로 TextView를 추가하고 다음을 추가합니다.
tv_context = (TextView) findViewById(R.id.tv_context);
registerForContextMenu(tv_context);
~ . ContextMenu.ContextMenuInfo menuInfo) {
MenuInflater inflater = new MenuInflater(this) ; L Inflator.inflate (R.Menu.Menu_Context, Menu)
Super.OncreateContextMenu (Menu, V, Menuinfo)
@@@@Override
Public Boolean ContextItemselected (메뉴 항목 항목) {i switch (item.getIDID ()) {
case r.id.blue:
TV_ContextColor (color.blue)
Case R.id.green:
s ExtColor (color.green ); true 반환;
|
그렇군요~ 여러 뷰에 대한 컨텍스트를 설정할 수 있습니다. 스위치(v.getId)를 아시죠~ 그리고 나중에 설명할 서브메뉴와 마찬가지로 컨텍스트 메뉴에서는 아이콘을 표시할 수 없습니다!
3.SubMenu(SubMenu)
소위 하위 메뉴는 <**item**>에 중첩된 <**menu**> 렌더링
구현 코드:
하위 메뉴의 메뉴 파일 작성: menu_sub.xml:<?xml version="1.0" 인코딩="utf-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@+id/submenu" android:title=" 하위 메뉴 사용 데모 ~">
> ~ 면 그런 다음 위 컨텍스트 메뉴의 두 가지 메서드 내용을 변경하고 다음 코드를 교체했습니다.inflator .inflate(R.menu.menu_sub, menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
public boolean onContextItemSelected(MenuItem item ) {
switch (item .getItemId()) {
케이스 R. id.one:
Toast.makeText(MainActivity.this, "하위 메뉴 1을 클릭했습니다.", Toast.LENGTH_SHORT).show();
사례 R. ID 2개:
~ case R.id. three:
.makeText( MainActivity.this,"하위 메뉴 3을 클릭했습니다.",Toast.LENGTH_SHORT).show() }
;
아주 간단하죠? 게다가 Java 코드에 하위 메뉴를 추가하려면 addSubMenu()를 호출하면 됩니다.
예: SubMenu file = menu.addSubMenu("File") 파일에도 addItem이 필요합니다. 메뉴 항목을 추가하려면!
4.PopupMenu (팝업 메뉴)
PopupWindow와 비슷한 것으로 지정된 보기 아래에 팝업 메뉴를 쉽게 표시할 수 있으며, 메뉴 옵션은 메뉴 리소스에서 가져올 수 있습니다~
사용 예:
실행 렌더링:
구현 코드:
메뉴 리소스 파일: menu_pop.xml:
<menu xmlns:android="http://schemas.android.com/ apk/res/android ">
<item android:id="@+id/lpig" android:title="꼬마돼지" />
<item android:id="@+id/bpig" android :title="큰 돼지" />
</menu>
레이아웃에 버튼을 추가하고 클릭 이벤트를 추가하세요:
MainActivity.java:
@Override
public void onClick(View v) {
PopupMenu popup = new PopupMenu (MainActivity.this,btn_show_menu);
popup.getMenuInflater().inflate(R. menu.menu_pop, popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
공개 부울 onMenuItemClick(MenuItem item) {
스위치(item.getItemId()){
케이스 R.id .lpig:
- ㅋㅋㅋ MainActivity.this ,"你点了大猪~",
Toast.LENGTH_SHORT).show();
|
5. 샘플 코드 다운로드
MenuDemo1.zip