Android, Java에서 확인란이 있는 옵션 메뉴를 만드는 방법

Android 메뉴는 모든 최신 Android 애플리케이션의 가장 중요한 구성 요소 중 하나이며 개발자가 설정, 검색, 앱 정보 등과 같은 특정 기능을 표시할 수 있는 수단을 제공합니다.
Option 메뉴는 Android에서 사용할 수 있는 메뉴 유형 중 하나입니다. 일부 안드로이드 애플리케이션의 툴바에 위치합니다. 옵션 메뉴는 더 복잡할 수 있으며 특정 기능을 수행하려면 추가 구성 요소가 필요할 수 있습니다. 라디오 버튼, 체크박스 등과 같은 구성 요소는 메뉴 레이아웃과 함께 사용할 수 있습니다. 그러나이 튜토리얼에서는 여러 확인란이 있는 Dark Option 메뉴를 만들 것입니다.
이 튜토리얼은 쉬운 이해와 안내를 위해 5단계로 나누어져 있습니다.
Step 1: Create a new project, File/New project/input the name of the app as MenuCheckBoxTutorial.
Step 2: Navigate to the res/layout/activity_main.xml, add the following code:
<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#FF000000">
    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:padding="5dp"
        android:background="#FF000000">
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:popupTheme="@style/PopUpDarkMenu"/>
    </android.support.design.widget.AppBarLayout>
</LinearLayout>
2단계에서는 선형 레이아웃 및 도구 모음에 대한 단순한 어두운 레이아웃을 만들고 있습니다. 메뉴에 스타일을 추가하는 데 사용될 속성
app:popupTheme="@style/PopUpDarkMenu"을 기록해 두십시오.Step 3: Create a menu file res/menu/menu_item.xml.
menu_item.xml 파일에서 메뉴 레이아웃의 내용을 정의할 것입니다. 튜토리얼 결과를 자세히 보면 첫 번째 메뉴 항목에 하위 메뉴가 있고 항목 아래에 하위 메뉴를 만들려면 첫 번째 메뉴 항목 아래에 새 메뉴를 만듭니다. 확인란의 경우 메뉴 항목에 확인란 아이콘을 표시하는 데 사용할
android: clickable= "true";를 사용합니다.<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/click_action"
        android:title="Click Action">
        <menu>
            <item
                android:id="@+id/item"
                android:title="Item"/>
        </menu>
    </item>
    <item
        android:id="@+id/hide_tracks"
        android:title="Hide Short Tracks"
        android:checkable="true"/>
    <item
        android:id="@+id/show_tracks"
        android:title="Show Track Duration"
        android:checkable="true"/>
    <item
        android:id="@+id/show_overflow"
        android:title="Show Overflow"
        android:checkable="true"/>
    <item
        android:id="@+id/round_corners"
        android:title="Round Corners"
        android:checkable="true"/>
    <item
        android:id="@+id/fast_scrollers"
        android:title="Fast Scroller"
        android:checkable="true"/>
    <item
        android:id="@+id/multi_select"
        android:title="Multi select"
        />
</menu>
Step 4: Navigate to the res/values/style.xml file.
style.xml 파일에서 메뉴의 모양을 정의합니다. "PopUpDarkMenu"라는 이름으로 새 스타일을 만들고 아래 코드를 추가합니다.
<resources>
   <style name="PopUpDarkMenu" parent="Theme.AppCompat.Light">
        <!-- Customize your theme here. -->
        <item name="android:textColor">#ffffff</item>
        <item name="android:colorBackground">#444444</item>
        <item name="colorControlNormal">#ffffff</item>   <!-- normal border color change as you wish -->
        <item name="colorControlActivated">#ffffff</item> <!-- activated color change as you wish -->       
    </style>
</resources>
android:textColor는 메뉴 레이아웃 텍스트의 색상을 설정하는 데 사용됩니다.colorControlNormal는 확인란의 테두리 색상을 설정하는 데 사용됩니다.colorControlActivated는 선택된 확인란의 색상을 설정하는 데 사용됩니다.Step 5 : Navigate to the MainActivity.class. Add the following codes.
package com.mycompany.checkbox;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
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);
        Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }
    @Override
    public boolean onCreateOptionsMenu (Menu menu)
    {
        getMenuInflater().inflate(R.menu.list_item, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected (MenuItem item)
    {
        switch (item.getItemId())
        {
            case R.id.hide_tracks:
                if (item.isChecked())
                {
                    item.setChecked(false);
                }
                else
                {
                    item.setChecked(true);
                    Toast.makeText(getApplication(), "Track Hidden", Toast.LENGTH_SHORT).show();
                }
                break;
            case R.id.show_tracks:
                if (!item.isChecked())
                {
                    item.setChecked(true);
                    Toast.makeText(getApplication(), "Track Shown", Toast.LENGTH_SHORT).show();
                }
                else
                {
                    item.setChecked(false);
                }
                break;
            case R.id.show_overflow:
                if (!item.isChecked())
                {
                    item.setChecked(true);
                    Toast.makeText(getApplication(), "Overflown", Toast.LENGTH_SHORT).show();
                }
                else
                {
                    item.setChecked(false);
                }
                break;
            case R.id.round_corners:
                if (!item.isChecked())
                {
                    item.setChecked(true);
                    Toast.makeText(getApplication(), "Round Corners", Toast.LENGTH_SHORT).show();
                }
                else
                {
                    item.setChecked(false);
                }
                break;
            case R.id.fast_scrollers:
                if (!item.isChecked())
                {
                    item.setChecked(true);
                    Toast.makeText(getApplication(), "Fast Scrollers enabled", Toast.LENGTH_SHORT).show();
                }
                else
                {
            item.setChecked(false);
                }
                break;
        }
        return true;
    }
}
위의 코드 스니펫에는 oncreate 메소드 외에도
onCreateOptionMenu(Menu menu) 및 onOptionItemSelected(Menu item) 라는 두 가지 다른 메소드가 있습니다.onCreateOnptionMenu (Menu menu) 이 함수는 메뉴라는 하나의 인수를 허용합니다. 그러나 메뉴를 생성하려면 activity_main.xml로 확장해야 합니다. 이는 getMenuInflater().inflate()를 사용하여 수행할 수 있습니다.inflate 메서드는 menu_item.xml 레이아웃을 메뉴 개체에 전달하는 데 사용됩니다.
The onCreateOptionMenu (Menu item)는 부울 값을 반환하지만 이 자습서에서는 반환 값이 true입니다.두 번째 방법은
onOptionItemSelected (Menu item)onCreateOnptionMenu (Menu menu)는 메뉴를 만드는 데 사용되지만 onOptionItemSelected (Menu item)는 메뉴의 각 메뉴 항목에 대한 onclick 이벤트를 처리하는 데 사용됩니다. 메뉴 목록의 특정 항목을 나타내는 하나의 인수를 허용합니다.item.getItemById()는 전달된 id와 일치하는 항목 id를 찾는 데 사용되며 switch 문을 사용하여 여러 id를 처리합니다.item.setChecked(boolean b)는 항목 확인란의 선택 여부를 확인하는 데 사용됩니다.결론
메뉴 작동 방식을 이해하는 것은 개발자에게 도움이 될 것입니다. 이 튜토리얼에서는 Android 애플리케이션의 메뉴에 체크박스를 구현하는 방법에 대해 코드 스니펫으로 자세히 설명했습니다.
Reference
이 문제에 관하여(Android, Java에서 확인란이 있는 옵션 메뉴를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/devaspires/how-to-create-an-option-menu-with-checkbox-in-android-java-26ba텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)