2021/01/07 - [안드로이드] - [안드로이드] 다이얼로그(Dialog) 사용자정의 (Custom) 화면으로 보여주기
2021/01/08 - [안드로이드] - [안드로이드]프래그먼트(Fragment) 간의 데이터 전달방법(Listener)
2021/01/09 - [안드로이드] - [안드로이드]바로가기메뉴(ContextMenu) 바탕화면 변경해보기
2021/01/10 - [안드로이드] - [안드로이드] 리스트(RecyclerView) 와 바로가기메뉴(ContextMenu)
이번 시간에는 메뉴화면을 동적으로 생성하는 예제를 만들어 보겠습니다.
1-1 메뉴폴더 생성
1-2 메뉴파일 생성
파일명은 dynamic_menu로 하겠습니다.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_delete"
android:icon="@drawable/ic_delete"
android:title="Delete"/>
<item
android:id="@+id/action_share"
android:icon="@drawable/ic_share"
android:title="Share"/>
</menu>
2. 메인화면 구현(activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
android:id="@+id/rootView"
>
<Button
android:id="@+id/btn_menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="동적메뉴"
/>
</RelativeLayout>
3. 메인코드 구현(MainActivity.java)
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Button btn_menu;
private ActionMode actionMode = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_menu = findViewById(R.id.btn_menu);
btn_menu.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if(actionMode != null){
return false;
}
actionMode = startActionMode(mActionModeCallback);
return true;
}
});
}
private ActionMode.Callback mActionModeCallback = new ActionMode.Callback(){
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
//액션모드 생성시 호출
MenuInflater menuInflater = mode.getMenuInflater();
menuInflater.inflate(R.menu.dynamic_menu, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
//액션모드 준비시 호출
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
//액션모드 아이템 선택시 호출
switch (item.getItemId()){
case R.id.action_delete:
displayMessage("삭제모드 선택");
mode.finish();
return true;
case R.id.action_share:
displayMessage("공유모드 선택");
mode.finish();
return true;
default:
return false;
}
}
@Override
public void onDestroyActionMode(ActionMode mode) {
//액션모드 끝날때 호출
actionMode = null;
}
};
public void displayMessage(String message){
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
}
4. 실행화면
2021/01/07 - [안드로이드] - [안드로이드] 다이얼로그(Dialog) 사용자정의 (Custom) 화면으로 보여주기
2021/01/08 - [안드로이드] - [안드로이드]프래그먼트(Fragment) 간의 데이터 전달방법(Listener)
2021/01/09 - [안드로이드] - [안드로이드]바로가기메뉴(ContextMenu) 바탕화면 변경해보기
2021/01/10 - [안드로이드] - [안드로이드] 리스트(RecyclerView) 와 바로가기메뉴(ContextMenu)
[안드로이드]카메라(Camera) 저장공간 지정해서 고화질로 저장하기 (0) | 2021.01.13 |
---|---|
[안드로이드] 카메라(Camera) 사진(Image) 찍고 가져오기 (0) | 2021.01.12 |
[안드로이드] 리스트(RecyclerView) 와 바로가기메뉴(ContextMenu) (0) | 2021.01.10 |
[안드로이드]바로가기메뉴(ContextMenu) 바탕화면 변경해보기 (0) | 2021.01.09 |
[안드로이드]프래그먼트(Fragment) 간의 데이터 전달방법(Listener) (0) | 2021.01.08 |
댓글 영역