- ListView 를 꾸욱 느르면 메뉴가 띄드록 함. 메뉴중 하나를 선택하여 선택된 색상을 background색상으로 한다.
- 에뮬레이터 우측의 menu버튼을 누르면 하단에 메뉴가 뜬다.
- ListView를 누르면 메뉴가 뜬다. 메뉴의 색상을 선택하면 background색상을 변경한다.
(1) activity_main.xml
; 리스트 뷰
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<TextView
android:id="@+id/txtView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="@string/hello_world"
android:textSize="20sp"
/>
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_below="@+id/txtView" >
</ListView>
</RelativeLayout>
(2) MainActivity.java
import android.os.Bundle;
import android.app.ListActivity;
import android.graphics.Color;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends ListActivity {
String items[]={"진달래","장미꽃","개나리","백합"};
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//리스트뷰에 대한 참조값 얻어오기
listView=getListView();
//리스트뷰와 연결될 어댑터 만들기
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
items
);
setListAdapter(adapter);
//리스트뷰를 누르면 컨텍스트 메뉴가 나옴.
registerForContextMenu(listView);
}
//옵션메뉴 만들기
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
//meun.add(그룹아이디,메뉴아이디,순서,텍스트)
MenuItem item = menu.add(0, 1, 0, "자장면");
item.setIcon(R.drawable.ic_launcher);
menu.add(0, 2, 0, "짬뽕");
menu.add(0, 3, 0, "탕수육");
menu.add(0, 4, 0, "군만두").setIcon(R.drawable.ic_launcher);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// 선택된 메뉴의 아이디 얻어오기
switch(item.getItemId()){
case 1: Toast.makeText(this, item.getTitle() + "을 선택했군요", Toast.LENGTH_LONG).show();
break;
case 2: Toast.makeText(this, item.getTitle() + "을 선택했군요", Toast.LENGTH_LONG).show();
break;
case 3: Toast.makeText(this, item.getTitle() + "을 선택했군요", Toast.LENGTH_LONG).show();
break;
case 4: Toast.makeText(this, item.getTitle() + "을 선택했군요", Toast.LENGTH_LONG).show();
break;
}
return true;
}
// 일정부분을 계속 누를때 나타나는 메뉴
// 컨텍스트 메뉴 만들기 ( 임의의 지점을 꾸~욱 누르면 나타나는 메뉴 )
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.setHeaderTitle("색상선택");
menu.add(0,1,0,"빨강");
menu.add(0,2,0,"파랑");
menu.add(0,3,0,"노랑");
menu.add(0,4,0,"초록");
}
// 리스트 뷰를 누르고 메뉴를 선택하면 해당 색상을 바꾼다.
@Override
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()){//선택된 메뉴에 대한 아이디
//리스트뷰의 배경색상 바꾸기
case 1: listView.setBackgroundColor(Color.RED);break;
case 2: listView.setBackgroundColor(Color.BLUE);break;
case 3: listView.setBackgroundColor(Color.YELLOW);break;
case 4: listView.setBackgroundColor(Color.GREEN);break;
}
return true;
}
}
'Mobile > Android' 카테고리의 다른 글
#19 ( Intent 2 : 화면 이동 - 넘어온 화면에서 값 을 주고 받음. ) (0) | 2013.02.02 |
---|---|
#18 (Intent 1: 화면 이동) (0) | 2013.02.02 |
#16 ( alert ) (0) | 2013.02.02 |
#15 ( spinner ) (0) | 2013.02.02 |
#14 (ListView : layout파일 붙이고, 이벤트 주기 ) (0) | 2013.02.02 |