Android
메뉴
수색…
통사론
- inflater.inflate (menu.your_xml_file, menu);
매개 변수
매개 변수 | 기술 |
---|---|
inflate(int menuRes, Menu menu) | 지정된 XML 자원에서 메뉴 계층을 확장합니다. |
getMenuInflater () | 이 문맥을 가지는 MenuInflater 를 돌려줍니다. |
onCreateOptionsMenu (Menu menu) | 활동 표준 옵션 메뉴의 내용을 초기화하십시오. 메뉴 항목을 메뉴에 배치해야합니다. |
onOptionsItemSelected (MenuItem item) | 이 메소드는 옵션 메뉴의 항목이 선택 될 때마다 호출됩니다. |
비고
메뉴에 대해 더 알고 싶다면 이 글을 읽으십시오. 희망이 도움이됩니다!
칸막이가있는 옵션 메뉴
Android에는 기본 옵션 메뉴가 있으며 여러 옵션을 사용할 수 있습니다. 더 많은 수의 옵션을 표시해야하는 경우 명확성을 유지하기 위해 해당 옵션을 그룹화하는 것이 좋습니다. 옵션은 그 사이에 구분선 (예 : 수평선)을 넣어 그룹화 할 수 있습니다. 분배자를 허용하기 위해 다음 주제가 사용될 수 있습니다.
<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:dropDownListViewStyle">@style/PopupMenuListView</item>
</style>
<style name="PopupMenuListView" parent="@style/Widget.AppCompat.ListView.DropDown">
<item name="android:divider">@color/black</item>
<item name="android:dividerHeight">1dp</item>
</style>
테마를 변경하면 분할자를 메뉴에 추가 할 수 있습니다.
메뉴에 사용자 정의 글꼴 적용
public static void applyFontToMenu(Menu m, Context mContext){
for(int i=0;i<m.size();i++) {
applyFontToMenuItem(m.getItem(i),mContext);
}
}
public static void applyFontToMenuItem(MenuItem mi, Context mContext) {
if(mi.hasSubMenu())
for(int i=0;i<mi.getSubMenu().size();i++) {
applyFontToMenuItem(mi.getSubMenu().getItem(i),mContext);
}
Typeface font = Typeface.createFromAsset(mContext.getAssets(), "fonts/yourCustomFont.ttf");
SpannableString mNewTitle = new SpannableString(mi.getTitle());
mNewTitle.setSpan(new CustomTypefaceSpan("", font, mContext), 0, mNewTitle.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
mi.setTitle(mNewTitle);
}
그리고 나서 활동에서 :
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
applyFontToMenu(menu,this);
return true;
}
활동에 메뉴 만들기
자신의 메뉴를 정의하려면 프로젝트의 res/menu/
디렉토리에 XML 파일을 만들고 다음 요소가있는 메뉴를 빌드하십시오.
-
<menu>
: 모든 메뉴 항목을 포함하는 메뉴를 정의합니다. -
<item>
: 메뉴의 단일 항목을 나타내는 MenuItem을 만듭니다. 하위 메뉴를 만들기 위해 중첩 된 요소를 만들 수도 있습니다.
1 단계:
다음과 같이 자신의 XML 파일을 만듭니다. res/menu/main_menu.xml
다음을 res/menu/main_menu.xml
.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/aboutMenu"
android:title="About" />
<item
android:id="@+id/helpMenu"
android:title="Help" />
<item
android:id="@+id/signOutMenu"
android:title="Sign Out" />
</menu>
2 단계:
옵션 메뉴를 지정하려면 작업 에서 onCreateOptionsMenu()
를 재정의하십시오.
이 방법에서는 메뉴 리소스 (XML 파일 즉, res/menu/main_menu.xml
)를 확장 할 수 있습니다.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}
사용자가 옵션 메뉴에서 항목을 선택하면 시스템은 사용자 작업의 재정의 된 onOptionsItemSelected()
메서드를 onOptionsItemSelected()
합니다.
- 이 메서드는 선택된 MenuItem을 전달합니다.
- 메뉴 항목의 고유 ID를 반환하는
getItemId()
를 호출하여 항목을 식별 할 수 있습니다 (메뉴 리소스res/menu/main_menu.xml
의android:id attribute
에 의해 정의res/menu/main_menu.xml
). * /
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.aboutMenu:
Log.d(TAG, "Clicked on About!");
// Code for About goes here
return true;
case R.id.helpMenu:
Log.d(TAG, "Clicked on Help!");
// Code for Help goes here
return true;
case R.id.signOutMenu:
Log.d(TAG, "Clicked on Sign Out!");
// SignOut method call goes here
return true;
default:
return super.onOptionsItemSelected(item);
}
}
마무리!
Activity
코드는 다음과 같습니다.
public class MainActivity extends AppCompatActivity {
private static final String TAG = "mytag";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.aboutMenu:
Log.d(TAG, "Clicked on About!");
// Code for About goes here
return true;
case R.id.helpMenu:
Log.d(TAG, "Clicked on Help!");
// Code for Help goes here
return true;
case R.id.signOutMenu:
Log.d(TAG, "User signed out");
// SignOut method call goes here
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
나만의 메뉴 모양 스크린 샷 :
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow