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 |
댓글