컨텍스트 메뉴 Context Menu
Context Menu
-
화면에 배치된 뷰에 설정할 수 있는 메뉴
-
메뉴가 설정된 뷰를 길게 누르면 메뉴가 나타난다.
registerForContext
-
컨텍스트 메뉴를 등록하는 메서드
-
메서드의 매개 변수로 넣어준 뷰 객체에 메뉴가 설정된다.
onCreateContextMenu
-
뷰를 길게 누르면 호출되는 메서드
-
여기에서 메뉴를 구성한다.
OnContextItemSelected
- •사용자가 메뉴를 선택했을 때 호출되는 메서드
Context Menu는 화면에 배치된 뷰를 길게 누르면 나타나는 메뉴이다.
package com.androidbasic.a21contextmenu;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.PagerAdapter;
import android.content.Context;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
//뷰의 주소 값을 담을 참조변수
TextView textView;
ListView listView;
//리스트뷰를 구성하기 위한 문자영 배열
String[] data = {
"항목1", "항목2", "항목3", "항목4", "항목5", "항목6", "항목7"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//뷰의 주소값을 받아온다
textView = (TextView) findViewById(R.id.textView);
listView = (ListView) findViewById(R.id.list1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
listView.setAdapter(adapter);
ListListener listListener = new ListListener();
listView.setOnItemClickListener(listListener);
//뷰에 컨텍스트 메뉴를 설정한다.
registerForContextMenu(textView);
registerForContextMenu(listView);
}
// 컨텍스트 메뉴가 설정되어 있는 뷰를 길제 누르면 컨텍스트 메뉴 구성을 위해서 호출하는 메서드
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
// 사용자가 길제 누르면 뷰의 주소값을 얻어온다
int view_id = v.getId();
switch (view_id) {
case R.id.textView:
menu.setHeaderTitle("텍스트 뷰의 컨텍스트 메뉴");
inflater.inflate(R.menu.textview_menu, menu);
case R.id.list1:
//사용자가 길게 누른 항목의 인덱스를 가져온다.
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
menu.setHeaderTitle("리스트뷰메뉴 : " + info.position);
inflater.inflate(R.menu.listview_menu, menu);
}
}
// 컨텍스트 메뉴의 항목을 터치 하면 호출되는 메서드
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
//사용자가 선택한 메뉴의 항목의 id를 추출한다.
int id = item.getItemId();
//사용자가 길게 누른 리스트의 항목 인덱스를 가지고 있는 객체를 추출한다.
ContextMenu.ContextMenuInfo info = item.getMenuInfo();
int position = 0;
if (info != null && info instanceof AdapterView.AdapterContextMenuInfo) {
AdapterView.AdapterContextMenuInfo info2 = (AdapterView.AdapterContextMenuInfo) info;
position = info2.position;
}
switch (id) {
case R.id.text_item1:
textView.setText("텍스트뷰의 메뉴1을 선탁하였습니다");
break;
case R.id.text_item2:
textView.setText("텍스트뷰의 메뉴2를 선택하였습니다.");
break;
case R.id.list_item1:
textView.setText("리스트뷰의 메뉴1을 선택하였습니다 : " + position);
break;
case R.id.list_item2:
textView.setText("리스트뷰의 메뉴2를 선택하였습니다. : " + position);
break;
}
return super.onContextItemSelected(item);
}
//리스트뷰의 리스너
class ListListener implements AdapterView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
textView.setText("아이템 클릭 : " + position);
}
}
}
실습 Git
Author And Source
이 문제에 관하여(컨텍스트 메뉴 Context Menu), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@annette57/컨텍스트-메뉴-Context-Menu
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
화면에 배치된 뷰에 설정할 수 있는 메뉴
메뉴가 설정된 뷰를 길게 누르면 메뉴가 나타난다.
-
컨텍스트 메뉴를 등록하는 메서드
-
메서드의 매개 변수로 넣어준 뷰 객체에 메뉴가 설정된다.
onCreateContextMenu
-
뷰를 길게 누르면 호출되는 메서드
-
여기에서 메뉴를 구성한다.
OnContextItemSelected
- •사용자가 메뉴를 선택했을 때 호출되는 메서드
Context Menu는 화면에 배치된 뷰를 길게 누르면 나타나는 메뉴이다.
package com.androidbasic.a21contextmenu;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.PagerAdapter;
import android.content.Context;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
//뷰의 주소 값을 담을 참조변수
TextView textView;
ListView listView;
//리스트뷰를 구성하기 위한 문자영 배열
String[] data = {
"항목1", "항목2", "항목3", "항목4", "항목5", "항목6", "항목7"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//뷰의 주소값을 받아온다
textView = (TextView) findViewById(R.id.textView);
listView = (ListView) findViewById(R.id.list1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
listView.setAdapter(adapter);
ListListener listListener = new ListListener();
listView.setOnItemClickListener(listListener);
//뷰에 컨텍스트 메뉴를 설정한다.
registerForContextMenu(textView);
registerForContextMenu(listView);
}
// 컨텍스트 메뉴가 설정되어 있는 뷰를 길제 누르면 컨텍스트 메뉴 구성을 위해서 호출하는 메서드
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
// 사용자가 길제 누르면 뷰의 주소값을 얻어온다
int view_id = v.getId();
switch (view_id) {
case R.id.textView:
menu.setHeaderTitle("텍스트 뷰의 컨텍스트 메뉴");
inflater.inflate(R.menu.textview_menu, menu);
case R.id.list1:
//사용자가 길게 누른 항목의 인덱스를 가져온다.
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
menu.setHeaderTitle("리스트뷰메뉴 : " + info.position);
inflater.inflate(R.menu.listview_menu, menu);
}
}
// 컨텍스트 메뉴의 항목을 터치 하면 호출되는 메서드
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
//사용자가 선택한 메뉴의 항목의 id를 추출한다.
int id = item.getItemId();
//사용자가 길게 누른 리스트의 항목 인덱스를 가지고 있는 객체를 추출한다.
ContextMenu.ContextMenuInfo info = item.getMenuInfo();
int position = 0;
if (info != null && info instanceof AdapterView.AdapterContextMenuInfo) {
AdapterView.AdapterContextMenuInfo info2 = (AdapterView.AdapterContextMenuInfo) info;
position = info2.position;
}
switch (id) {
case R.id.text_item1:
textView.setText("텍스트뷰의 메뉴1을 선탁하였습니다");
break;
case R.id.text_item2:
textView.setText("텍스트뷰의 메뉴2를 선택하였습니다.");
break;
case R.id.list_item1:
textView.setText("리스트뷰의 메뉴1을 선택하였습니다 : " + position);
break;
case R.id.list_item2:
textView.setText("리스트뷰의 메뉴2를 선택하였습니다. : " + position);
break;
}
return super.onContextItemSelected(item);
}
//리스트뷰의 리스너
class ListListener implements AdapterView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
textView.setText("아이템 클릭 : " + position);
}
}
}
실습 Git
Author And Source
이 문제에 관하여(컨텍스트 메뉴 Context Menu), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@annette57/컨텍스트-메뉴-Context-Menu
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
뷰를 길게 누르면 호출되는 메서드
여기에서 메뉴를 구성한다.
- •사용자가 메뉴를 선택했을 때 호출되는 메서드
Context Menu는 화면에 배치된 뷰를 길게 누르면 나타나는 메뉴이다.
package com.androidbasic.a21contextmenu;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.PagerAdapter;
import android.content.Context;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
//뷰의 주소 값을 담을 참조변수
TextView textView;
ListView listView;
//리스트뷰를 구성하기 위한 문자영 배열
String[] data = {
"항목1", "항목2", "항목3", "항목4", "항목5", "항목6", "항목7"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//뷰의 주소값을 받아온다
textView = (TextView) findViewById(R.id.textView);
listView = (ListView) findViewById(R.id.list1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
listView.setAdapter(adapter);
ListListener listListener = new ListListener();
listView.setOnItemClickListener(listListener);
//뷰에 컨텍스트 메뉴를 설정한다.
registerForContextMenu(textView);
registerForContextMenu(listView);
}
// 컨텍스트 메뉴가 설정되어 있는 뷰를 길제 누르면 컨텍스트 메뉴 구성을 위해서 호출하는 메서드
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
// 사용자가 길제 누르면 뷰의 주소값을 얻어온다
int view_id = v.getId();
switch (view_id) {
case R.id.textView:
menu.setHeaderTitle("텍스트 뷰의 컨텍스트 메뉴");
inflater.inflate(R.menu.textview_menu, menu);
case R.id.list1:
//사용자가 길게 누른 항목의 인덱스를 가져온다.
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
menu.setHeaderTitle("리스트뷰메뉴 : " + info.position);
inflater.inflate(R.menu.listview_menu, menu);
}
}
// 컨텍스트 메뉴의 항목을 터치 하면 호출되는 메서드
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
//사용자가 선택한 메뉴의 항목의 id를 추출한다.
int id = item.getItemId();
//사용자가 길게 누른 리스트의 항목 인덱스를 가지고 있는 객체를 추출한다.
ContextMenu.ContextMenuInfo info = item.getMenuInfo();
int position = 0;
if (info != null && info instanceof AdapterView.AdapterContextMenuInfo) {
AdapterView.AdapterContextMenuInfo info2 = (AdapterView.AdapterContextMenuInfo) info;
position = info2.position;
}
switch (id) {
case R.id.text_item1:
textView.setText("텍스트뷰의 메뉴1을 선탁하였습니다");
break;
case R.id.text_item2:
textView.setText("텍스트뷰의 메뉴2를 선택하였습니다.");
break;
case R.id.list_item1:
textView.setText("리스트뷰의 메뉴1을 선택하였습니다 : " + position);
break;
case R.id.list_item2:
textView.setText("리스트뷰의 메뉴2를 선택하였습니다. : " + position);
break;
}
return super.onContextItemSelected(item);
}
//리스트뷰의 리스너
class ListListener implements AdapterView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
textView.setText("아이템 클릭 : " + position);
}
}
}
실습 Git
Author And Source
이 문제에 관하여(컨텍스트 메뉴 Context Menu), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@annette57/컨텍스트-메뉴-Context-Menu
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
package com.androidbasic.a21contextmenu;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.PagerAdapter;
import android.content.Context;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
//뷰의 주소 값을 담을 참조변수
TextView textView;
ListView listView;
//리스트뷰를 구성하기 위한 문자영 배열
String[] data = {
"항목1", "항목2", "항목3", "항목4", "항목5", "항목6", "항목7"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//뷰의 주소값을 받아온다
textView = (TextView) findViewById(R.id.textView);
listView = (ListView) findViewById(R.id.list1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
listView.setAdapter(adapter);
ListListener listListener = new ListListener();
listView.setOnItemClickListener(listListener);
//뷰에 컨텍스트 메뉴를 설정한다.
registerForContextMenu(textView);
registerForContextMenu(listView);
}
// 컨텍스트 메뉴가 설정되어 있는 뷰를 길제 누르면 컨텍스트 메뉴 구성을 위해서 호출하는 메서드
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
// 사용자가 길제 누르면 뷰의 주소값을 얻어온다
int view_id = v.getId();
switch (view_id) {
case R.id.textView:
menu.setHeaderTitle("텍스트 뷰의 컨텍스트 메뉴");
inflater.inflate(R.menu.textview_menu, menu);
case R.id.list1:
//사용자가 길게 누른 항목의 인덱스를 가져온다.
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
menu.setHeaderTitle("리스트뷰메뉴 : " + info.position);
inflater.inflate(R.menu.listview_menu, menu);
}
}
// 컨텍스트 메뉴의 항목을 터치 하면 호출되는 메서드
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
//사용자가 선택한 메뉴의 항목의 id를 추출한다.
int id = item.getItemId();
//사용자가 길게 누른 리스트의 항목 인덱스를 가지고 있는 객체를 추출한다.
ContextMenu.ContextMenuInfo info = item.getMenuInfo();
int position = 0;
if (info != null && info instanceof AdapterView.AdapterContextMenuInfo) {
AdapterView.AdapterContextMenuInfo info2 = (AdapterView.AdapterContextMenuInfo) info;
position = info2.position;
}
switch (id) {
case R.id.text_item1:
textView.setText("텍스트뷰의 메뉴1을 선탁하였습니다");
break;
case R.id.text_item2:
textView.setText("텍스트뷰의 메뉴2를 선택하였습니다.");
break;
case R.id.list_item1:
textView.setText("리스트뷰의 메뉴1을 선택하였습니다 : " + position);
break;
case R.id.list_item2:
textView.setText("리스트뷰의 메뉴2를 선택하였습니다. : " + position);
break;
}
return super.onContextItemSelected(item);
}
//리스트뷰의 리스너
class ListListener implements AdapterView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
textView.setText("아이템 클릭 : " + position);
}
}
}
Author And Source
이 문제에 관하여(컨텍스트 메뉴 Context Menu), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@annette57/컨텍스트-메뉴-Context-Menu저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)