Programming Language/Android Programming
다중메뉴
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 |
댓글