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

8937 단어 javahowtoandroidmenu


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 애플리케이션의 메뉴에 체크박스를 구현하는 방법에 대해 코드 스니펫으로 자세히 설명했습니다.

좋은 웹페이지 즐겨찾기