Programming Language/Android Programming

다중메뉴

D4tai1 2018. 10. 9.

1. 다중메뉴

1) 메뉴 리소스파일 생성

- 2개의 메뉴 .xml 파일을 만든다.

 

2) menu1.xml 설정

- 위와 같이 [Menu Item] 2개를 생성하고 id와 title을 입력한다.

 

3) menu2.xml 설정

- 위 그림과 같이 [Menu Item] 3개를 생성하고 id와 title을 입력한다.

 

4) activity_main.xml 설정

- 위 그림과 같이 LinearLayout 내에 button 3개를 생성하고 id와 text를 입력한다. 

 

- btnColor의 layout_gravity 속성은 [center]로 부여한다.

 

- btnSize의 layout_gravity 속성은 [center]로 부여한다.

 

- button1의 layout_gravity 속성은 [center]로 부여한다.

- btnColor의 Layout_Margin속성의 top은 [50dp]로 부여한다.

그러면 위에서 50만큼 여유공간이 생긴다.

 

5) MainActivity.java 소스

package com.example.d4tai1.pro20181008a_3;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {
    Button btnSize, btnColor, button;
    LinearLayout linearLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnColor = (Button)findViewById(R.id.btnColor);
        btnSize = (Button)findViewById(R.id.btnSize);
        button = (Button)findViewById(R.id.button1);
        linearLayout = (LinearLayout)findViewById(R.id.linearLayout1);

        registerForContextMenu(btnColor);
        registerForContextMenu(btnSize);
        // 즉 버튼을 누르면 누른 버튼에 대한 메뉴가 나오도록하는 메소드이다.
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        MenuInflater menuInflater = getMenuInflater();
        if (v == btnColor) {    //view가 버튼 컬러면?
            menuInflater.inflate(R.menu.menu2,menu);    // 컬러 버튼을 눌렀을 때 메뉴1
            //메뉴2을 등록시키고
        } else if (v == btnSize) {
            menuInflater.inflate(R.menu.menu1,menu);    // 컬러 버튼을 눌렀을 때 메뉴1
            //메뉴1을 등록시킨다.
        }

        super.onCreateContextMenu(menu, v, menuInfo);
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch(item.getItemId()) {
            case R.id.itemRed:
                linearLayout.setBackgroundColor(Color.RED);
                return true;
            case R.id.itemGreen:
                linearLayout.setBackgroundColor(Color.GREEN);
                return true;
            case R.id.itemBlue:
                linearLayout.setBackgroundColor(Color.BLUE);
                return true;
            case R.id.itemRotate:
                button.setRotation(45);
                return true;
            case R.id.itemSize:
                button.setScaleX(2);
                return true;
        }

        return super.onContextItemSelected(item);
    }
}

 

 

6) 시연

 - 배경색 변경을 길게 클릭하여 메뉴를 확인하고 메뉴에서 배경색을 변경할 수 있다.

 

 - 버튼변경을 길게 클릭하여 메뉴를 확인하고 메뉴에서 회전 및 크기변경을 할 수 있다.

'Programming Language > Android Programming' 카테고리의 다른 글

대화상자[라디오]  (0) 2018.10.27
메세지 띄우기  (0) 2018.10.09
메뉴 라디오버튼  (3) 2018.10.09
메뉴버튼  (0) 2018.10.09
계산기, 예약  (0) 2018.09.18

댓글