구분선 넣는 방법이 다양하게 있으나, 생각보다 찾는데 시간이 많이 걸려서 여기에 정리해놓음
※ 이 방법으로 하면 메뉴하나하나 마다 밑줄 배경을 적용 하는 방식이기 때문에, 맨 밑 메뉴에 밑줄을 넣어도 상관없을 때 적용
1. OptionMenu 사용하기
(1) Menu resource 생성
Android Studio의 프로젝트에서 res 폴더 우클릭을 하고 new → Android Resource Directory를 선택해서 menu 폴더를 생성
생성한 menu 폴더를 우클릭해서 new → Menu resource file을 선택해서 menu_main.xml 파일을 생성(파일 이름은 아무거나 상관없음)
(2) menu_main.xml 작성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_1" android:orderInCategory="100" android:title="Menu 1" /> <item android:id="@+id/menu_2" android:orderInCategory="100" android:title="Menu 2" /> </menu> | cs |
(3) MainActivity.java 작성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | ... // 메뉴 생성 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_main, menu); return true; } // 메뉴 버튼 선택했을 때 이벤트 함수 @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case R.id.menu_1: Toast.makeText(getApplicationContext(), "Menu 1!", Toast.LENGTH_SHORT).show(); return true; case R.id.menu_2: Toast.makeText(getApplicationContext(), "Menu 2!", Toast.LENGTH_SHORT).show(); return true; } return super.onOptionsItemSelected(item); } ... | cs |
2-1. 메뉴마다 구분선 넣기()
(1) style.xml 파일 수정
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <!-- dropDownListViewStyle 추가 --> <item name="android:dropDownListViewStyle">@style/popup</item> </style> <!-- popup style 추가 --> <style name="popup" parent="Widget.AppCompat.ListView.DropDown"> <item name="android:divider">@color/colorPrimary</item> <item name="android:dividerHeight">1dp</item> <item name="android:textColor">@color/colorPrimary</item> <item name="android:itemBackground">@android:color/white</item> </style> </resources> | cs |
- 이 경우 중간 중간에 구분선이 들어감
2-2. 메뉴마다 구분선 넣기()
(1) 메뉴 배경 리소스 파일 생성
res\drawable 폴더 우클릭 new → Drawable resource file을 선택해서 view_line.xml 생성(파일 이름 아무거나 상관없음)
(2) 리소스 파일 작성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle" > <solid android:color="#F4F4F4" /> </shape> </item> <item android:top="-2dp" android:right="-2dp" android:left="-2dp"> <shape> <solid android:color="@android:color/transparent" /> <stroke android:width="1dp" android:color="#EAEAEA" /> </shape> </item> </layer-list> | cs |
(3) styles.xml 파일 수정
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <!-- 추가 --> <item name="android:itemBackground">@drawable/view_line</item> </style> </resources> | cs |
- 이 경우 메뉴 맨 밑에 마다 구분선이 들어감