728x90
반응형
팝업 메뉴는 안드로이드에서 특정 뷰를 클릭했을 때 메뉴가 해당 뷰 아래 혹은 위에 나타나는 것이다.
아래에 나타나는 경우는 아래에 공간이 있을 때고 공간이 없다면 위에 나타난다.
그럼 예제를 통해서 확인해보자.
xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/pop1"
android:title="팝업1"/>
<item
android:id="@+id/pop2"
android:title="팝업2"/>
<item
android:id="@+id/pop3"
android:title="팝업3"/>
</menu>
이렇게 xml을 설정해서 메뉴를 만들었다.
그리고 메인 레이아웃은
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/pop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="팝업"
android:textSize="50dp"
android:layout_gravity="center"
android:onClick="popClick"/>
</LinearLayout>
안에 버튼을 만들었고 버튼 클릭했을 때 popClick 메소드를 호출하게 했다.
실행 화면
자그럼 이제 자바 소스를 확인해보자 자세한 내용은 주석으로 설명해놨으린 확인 해보면 될 것 같다.
public class MainActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void popClick(View view) {
//PopupMenu 객체를 만들어 줘야하는대 해당 객체를 생성할때 인자론 context가 필요해서 Onclick 메소드를 xml에서 포함해줘야하고
//또다른 매개변수로는 View를 받기 때문에 view로 설정을 해준다.
//아래에서 this는 해당 Activity를 뜻한다.
PopupMenu popM = new PopupMenu(this,view);
//다른 메뉴들과 마찬가지로 inflate 시켜준다.
popM.getMenuInflater().inflate(R.menu.popup_menu,popM.getMenu());
//자바소스로 popM.getMenu()를 해서 메뉴를 가져오고 거기에 .add()를 해줘서 메뉴 추가
popM.getMenu().add(0,4,3,"팝업4");
//해당 메뉴가 클릭이 됐을때 나타내 주는것
popM.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.pop1:
Toast.makeText(getApplicationContext(),"이건 팝업1",Toast.LENGTH_SHORT).show();
return true;
case R.id.pop2:
Toast.makeText(getApplicationContext(),"이건 팝업2",Toast.LENGTH_SHORT).show();
return true;
case R.id.pop3:
Toast.makeText(getApplicationContext(),"이건 팝업3",Toast.LENGTH_SHORT).show();
return true;
case 4:
Toast.makeText(getApplicationContext(),"이건 팝업4",Toast.LENGTH_SHORT).show();
return true;
default:
return false;
}
}
});
popM.show(); //이걸 해야지만 팝업이 보여진다.
}
}
반응형
'코딩일기 > android studio' 카테고리의 다른 글
안드로이드 독학 17일차 : DatePickerDialog & TimePickerDialog (2) | 2021.04.01 |
---|---|
안드로이드 독학 16일차 : Dialog(대화상자) (2) | 2021.03.31 |
안드로이드 독학 15일차 : 컨텍스트 액션 모드(Context ActionMode) (0) | 2021.03.30 |
안드로이드 독학 15일차 : 플로팅 컨텍스트 메뉴(Floating Context Menu) (0) | 2021.03.30 |
안드로이드 독학 14일차 : 옵션 메뉴 생성하기 (자바소스편) (0) | 2021.03.29 |