Programmer:)
[AndroidStudio] MenuBox 만들기(PopupMenu) 본문
반응형
1. res 폴더 안에 menu 폴더 없을 시 아래와 같이 menu폴더 생성
2. menu resourcefile 생성
3. menu_sounselorlist.xml : 메뉴박스에 넣을 item xml 작성
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/rendom"
android:title="랜덤" />
<item
android:id="@+id/highestScore"
android:title="신통지수 높은 순" />
<item
android:id="@+id/highestCase"
android:title="상담건수 높은 순" />
</menu>
4. fragment or activity 소스에 코드 추가
<클릭 이벤트 리스너>
<메뉴박스 생성 및 item클릭 이벤트>
<레이아웃 클릭이벤트로 설정>
<전체 소스 코드 : 메뉴박스에 필요한 부분만 정리하여 올림>
public class HomeFragment extends Fragment
{
//region 상담사리스트 관련 변수
private ConstraintLayout m_constraintLayoutCounselorButton;
private TextView m_textViewCounselorList;
private ImageView m_imageViewCounselorListArrow;
//endregion
// region 초기화 함수
private void Init()
{
Log.i("ImageSwipeActivity" , "ImageSwipeActivity Init");
m_textViewCounselorList = (TextView)getView().findViewById(R.id.textView_counselorList);
m_imageViewCounselorListArrow = (ImageView)getView().findViewById(R.id.imageView_counselorListArrow);
m_constraintLayoutCounselorButton = (ConstraintLayout) getView().findViewById(R.id.constraintLayout_counselorListButton);
}
//endregion
//region 메인함수
public HomeFragment()
{
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return inflater.inflate(R.layout.fragment_home, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
Init();
m_constraintLayoutCounselorButton.setOnClickListener(clickListener);
}
//endregion
//region 이벤트 함수
//click event bridge
View.OnClickListener clickListener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.constraintLayout_counselorListButton:
CounselorMenu(v);
break;
}
}
};
//counselor list menu box click event
private void CounselorMenu(View v) //v: 클릭한 view
{
PopupMenu popupMenu = new PopupMenu(getContext(),v); //v 위치에 popup
popupMenu.getMenuInflater().inflate(R.menu.menu_sounselorlist, popupMenu.getMenu());
m_imageViewCounselorListArrow.setRotationX(180); //접는 화살표 이미지는 펼치는 화살표로 보이게 회전
//item 클릭시 이벤트
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item)
{
m_textViewCounselorList.setText(item.getTitle()); //클릭한 item의 title로 상단 text 바꾸고 싶었음
m_imageViewCounselorListArrow.setRotationX(0); //다시 접어진 화살표 이미지로 전환
//각 item당 원하는 이벤트 여기에 넣어주면 됨
switch (item.getItemId())
{
case R.id.rendom:
Log.d("HomeFragment", "onMenuItemClick: " + "랜덤");
return true;
case R.id.highestScore:
Log.d("HomeFragment", "onMenuItemClick: " + "신통지수 높은 순");
return true;
case R.id.highestCase:
Log.d("HomeFragment", "onMenuItemClick: " + "상담건수 높은 순");
return true;
}
return false;
}
});
popupMenu.show(); //팝업메뉴 보이기
}
//endregion
}
구현영상
반응형
'DEV > AndroidStudio' 카테고리의 다른 글
[AndroidStudio] color opacity hex value (0) | 2021.02.01 |
---|---|
[AndroidStudio] Fragment 분석 (0) | 2021.01.28 |
[AndroidStudio] ViewPager2 (ImageSlide/ Banner) (0) | 2020.12.30 |
[AndroidStudio] 단축키 (0) | 2020.12.29 |
[AndroidStudio] VideoPlay, VideoView / raw폴더 생성 (0) | 2020.12.28 |
Comments