안 드 로 이 드 학습 노트-메뉴 소개(2)
이번 에는 이전 글 에서 다 말 하지 못 한 Menu 학습,컨 텍스트 메뉴(Context menu)와 팝 업 메뉴(Popup menu)를 계속 할 것 입 니 다.
컨 텍스트 메뉴
컨 텍스트 메뉴 는 UI 인터페이스의 특정 항목 이나 컨 텍스트 프레임 워 크 에 대한 동작 을 제공 합 니 다.마치 Windows 에서 오른쪽 단 추 를 누 르 는 메뉴 와 같 습 니 다.
Android 에 서 는 상하 문 조작 을 제공 하 는 두 가지 방식 이 있 습 니 다.하 나 는 떠 다 니 는 상하 문 메뉴(길 게 누 르 면 팝 업)이 고,다른 하 나 는 상하 문 조작 모드 입 니 다.
그렇다면 어떻게 움 직 이 는 컨 텍스트 메뉴(floating context menu)를 만 듭 니까?
1.registerForContextMenu()방법 을 View 등록 컨 텍스트 메뉴 로 호출 합 니 다.
2.Activity 나 Fragment 에서 onCreate ContextMenu()방법 을 실현 합 니 다.
3.onContextItemSelected()방법 을 실현 하여 사용자 가 메뉴 항목 을 길 게 누 르 는 이벤트 에 응답 합 니 다.
다음은 컨 텍스트 메뉴 의 demo 입 니 다.
private TextView textView;
final int RED = 0x101;
final int BLUE = 0x102;
final int GREEN = 0x103;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(TextView)findViewById(R.id.textView);
// textView
registerForContextMenu(textView);
}
//
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.add(0, RED, 0, "Red");
menu.add(0, BLUE, 0, "Blue");
menu.add(0,GREEN,0,"Green");
menu.setHeaderTitle("Set the color of the textView");
menu.setGroupCheckable(0, true, true);
}
//
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case GREEN:
item.setChecked(true);
textView.setBackgroundColor(Color.GREEN);
break;
case BLUE:
item.setChecked(true);
textView.setBackgroundColor(Color.BLUE);
break;
case RED:
item.setChecked(true);
textView.setBackgroundColor(Color.RED);
break;
}
return true;
}
상하 문 조작 모드 사용
상하 문 조작 모델 은 시스템 ActionMode 인 터 페 이 스 를 실현 하고 사용자 의 상호작용 을 주목 하여 상하 문 조작 행 위 를 실현 하 는 것 이다.사용자 가 메뉴 항목 을 선택 하여 이 모드 를 실행 하면 사용자 가 선택 한 메뉴 항목 을 조작 할 수 있 는 컨 텍스트 action bar 가 화면 상단 에 나타 납 니 다.사용 자 는 여러 가지(select multi items),선택 취소(deselect),작업 완료(Done),반환(BACK)등 을 선택 할 수 있 습 니 다.
그럼 상하 문 조작 모드 는 언제 호출 합 니까?
다음 두 가지 상황 에서 호출:
1.사용자 가 View 에 대해 길 게 누 르 기(long-click)동작 을 수행 합 니 다.
2.사용 자 는 View 에서 체크 상자(checkbox)나 비슷 한 UI 구성 요 소 를 선택 하 였 습 니 다.
상하 문 조작 모드 를 어떻게 사용 합 니까?
이것 도 두 가지 상황 으로 나 뉜 다.
1.독립 된 뷰
먼저 ActionMode.Callback 인 터 페 이 스 를 실현 한 다음 startActionMode()방법 을 호출 합 니 다.
2.ListView 또는 GirdView(또는 다른 AbsListView 의 확장)
AbsListView.MultiChoiceModeListener 인 터 페 이 스 를 실현 하고 set MultiChoiceModeListener()방법 을 호출 하여 CHOICEMODE_MULTIPLE_MODAL 매개 변 수 는 set ChoiceMode()방법 을 호출 합 니 다.
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(ListView)findViewById(R.id.listview1);
String arr[]={"New York","Shanghai","Los Angle","BeiJing","Paris","Tykyo","Moscow","Berlin","HongKong"};
// ArrayAdapter
ArrayAdapter<String> adapter1= new ArrayAdapter<String>(this,R.layout.array_item ,arr);
listView.setAdapter(adapter1);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
// TODO Auto-generated method stub
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.contextmenu, menu);
return true;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.done:
Toast.makeText(MainActivity.this, "You have clicked the DONE", Toast.LENGTH_LONG).show();
break;
case R.id.cancel:
Toast.makeText(MainActivity.this, "You have clicked the CANCEL", Toast.LENGTH_LONG).show();
default:
break;
}
return true;
}
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
// TODO Auto-generated method stub
}
});
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.