- 메뉴 버튼을 누르면 하단에 메뉴가 나오도록 함.

- ListView 를 꾸욱 느르면 메뉴가 띄드록 함. 메뉴중 하나를 선택하여 선택된 색상을 background색상으로 한다.

 

 - 에뮬레이터 우측의 menu버튼을 누르면 하단에 메뉴가 뜬다.

 

 

 - ListView를 누르면 메뉴가 뜬다. 메뉴의 색상을 선택하면 background색상을 변경한다.

(1) activity_main.xml

; 리스트 뷰

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    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

package com.example.test17_menu;

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;
    }

}

+ Recent posts