안드로이드 스튜디오 메뉴 설정
안드로이드 스튜디오반응형
OptionMenu


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/apple"
android:icon="@drawable/ic_launcher_background"
android:title="사과" />
<item
android:id="@+id/banana"
android:icon="@drawable/ic_launcher_background"
android:title="바나나" />
<item
android:id="@+id/grape"
android:icon="@drawable/ic_launcher_background"
android:title="포도" />
</menu>
-> 생성한 xml파일에서 메뉴 아이템 구성
package com.example.menu;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@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.mymenu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected (MenuItem item){
switch (item.getItemId())
{
case R.id.apple:
Toast.makeText(getApplicationContext(),"사과",Toast.LENGTH_SHORT).show();
return true;
case R.id.banana:
Toast.makeText(getApplicationContext(),"바나나",Toast.LENGTH_SHORT).show();
return true;
case R.id.grape:
Toast.makeText(getApplicationContext(),"포도",Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
-> 메인엑티비티
ActionBar


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/refresh"
android:icon="@drawable/ic_action_refresh"
app:showAsAction="always"
android:title="refresh"/>
<item
android:id="@+id/search"
android:icon="@drawable/ic_action_search"
app:showAsAction="ifRoom"
android:title="search"/>
<item
android:id="@+id/setting"
android:orderInCategory="100"
app:showAsAction="never"
android:title="setting"/>
/*
app:showAsAction="always" : 항상 보이게 표시
app:showAsAction="never" : 항상 overflow 에 표시
app:showAsAction="ifRoom" : 액션바에 공간이 있을경우 표시
app:showAsAction="withText" : 액션바에 아이콘과 텍스트 함께 표시
*/
</menu>
package com.example.actionbar;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//메뉴 리소스 팽창, 액션바에 항목 추가
getMenuInflater().inflate(R.menu.action_bar, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//항목들이 눌러지면 액션 시작
switch (item.getItemId())
{
case R.id.refresh:
Toast.makeText(this,"refresh",Toast.LENGTH_SHORT).show();
return true;
case R.id.search:
Toast.makeText(this,"search",Toast.LENGTH_SHORT).show();
return true;
case R.id.setting:
Toast.makeText(this,"setting",Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="search"
android:id="@+id/search"
android:icon="@android:drawable/ic_menu_search"
/>
<item android:title="add"
android:id="@+id/add"
android:icon="@android:drawable/ic_menu_add"/>
<item android:title="edit"
android:id="@+id/edit"
android:icon="@android:drawable/ic_menu_edit"/>
</menu>
<?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"
tools:context=".MainActivity" >
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="click"
android:text="Show Popup Menu" />
</LinearLayout>
package com.example.popup;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.PopupMenu;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View view) {
PopupMenu popup = new PopupMenu(this, view);
popup.getMenuInflater().inflate(R.menu.popup,popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(getApplicationContext(),"클릭된 팝업 메뉴: "+item.getTitle(),Toast.LENGTH_SHORT).show();
return true;
}
});
popup.show();
}
}
반응형
'안드로이드 스튜디오' 카테고리의 다른 글
| 안드로이드 스튜디오 그래픽 (0) | 2020.04.26 |
|---|---|
| 안드로이드 스튜디오 대화상자 (0) | 2020.04.25 |
| 안드로이드 스튜디오 event 처리 4 (seekbar) (0) | 2020.04.19 |
| 안드로이드 스튜디오 터치 이벤트 (0) | 2020.04.19 |
| 안드로이드 스튜디오 event 처리 3 (0) | 2020.04.18 |