Android 활성 바 ActionBar 의 상세 한 설명 및 인 스 턴 스 코드

Android 활성 바 ActionBar 에 대한 자세 한 설명
그림 1
ActionBar
그림 2
ActionBar
그림 3
TabHost,Navigation,ActionBar
그림 4
Swipe
그림 5
DropDown
Action Bar 가 제공 하 는 기능 총화
그림 1.ActionBar 를 사용 하여 옵션 메뉴 항목 을 표시 합 니 다.
            menu_mainxml 코드
프로그램 아이콘 탐색 사용 하기
Action View 를 추가 하 는 방법
그림 2 Activity 코드 구역
  • menu_mainxml 코드
  • clockxml
  • 그림 3 ActionBar 를 사용 하여 Tab 내 비게 이 션 을 실현 한다.
  • ActionBar 를 만 들 고 Tab 네 비게 이 션 절 차 를 실현 합 니 다
  • MainActivity 코드DummyFragmentjava 코드그림 4 Android 30 이전 Fragment 지원
    Mainxml 코드MainActivity 코드
    그림 5 Action Bar 를 사용 하여 드 롭 다운 내 비게 이 션 을 실현 한다.
  • ActionBar 를 만 들 고 드 롭 다운 네 비게 이 션 절 차 를 실현 합 니 다
  • MainActivity 코드 영역
    Action Bar 는 Android 3.0 의 중요 한 업데이트 중 하나 입 니 다.그래서 현재 대상 버 전이 11 보다 높 으 면 기본적으로 Action Bar 가 시 작 됩 니 다.
    Action Bar 가 제공 하 는 기능 요약:
    옵션 메뉴 의 메뉴 항목 을 표시 합 니 다
  • 프로그램 아이콘 을 홈 메 인 화면 으로 되 돌아 가 거나 위로 내 비게 이 션 을 합 니 다
  • 액 션 뷰 로 상호작용 뷰 를 제공 합 니 다
  • Tab 기반 네 비게 이 션 방식 을 제공 하여 여러 개의 Fragment 를 전환 할 수 있 습 니 다
  • 4.567917.드 롭 다운 내 비게 이 션 방식 을 제공 합 니 다.
    Action Bar 를 숨 깁 니 다.사용 한 친구 들 은 모두 알 고 있 을 것 입 니 다.AndroidManifest.xml 에서 NoAction Bar 를 직접 정의 하면 Action Bar 를 닫 을 수 있 습 니 다.그러나 이런 방법 으로 Action Bar 를 닫 으 면 나중에 Action Bar 를 사용 할 수 없습니다.그래서 보통 저 희 는 두 번 째 코드 로 숨 기 는 방식 으로 Action Bar 에 대한 작업 을 합 니 다.
    1.getActionBar();
    2.show():ActionBar 표시
    3.hide():ActionBar 숨 기기
    그림 1.ActionBar 를 사용 하여 옵션 메뉴 항목 을 표시 합 니 다.
    menu_main.xml 코드:
    
    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
      <item android:title="@string/font_size"
        android:showAsAction="always|withText"
        android:icon="@drawable/font">
        <menu>
          <!--           -->
          <group android:checkableBehavior="single">
            <!--         -->
            <item
              android:id="@+id/font_10"
              android:title="@string/font_10"/>
            <item
              android:id="@+id/font_12"
              android:title="@string/font_12"/>
            <item
              android:id="@+id/font_14"
              android:title="@string/font_14"/>
            <item
              android:id="@+id/font_16"
              android:title="@string/font_16"/>
            <item
              android:id="@+id/font_18"
              android:title="@string/font_18"/>
          </group>
        </menu>
      </item>
      <!--           -->
      <item android:id="@+id/plain_item"
         android:showAsAction="always|withText"
         android:title="@string/plain_item">
      </item>
      <item android:title="@string/font_color"
         android:showAsAction="always"
         android:icon="@drawable/color">
        <menu>
          <!--              -->
          <group>
            <!--         -->
            <item
              android:id="@+id/red_font"
              android:title="@string/red_title"/>
            <item
              android:id="@+id/green_font"
              android:title="@string/green_title"/>
            <item
              android:id="@+id/blue_font"
              android:title="@string/blue_title"/>
          </group>
        </menu>
      </item>
    </menu>
    
    프로그램 아이콘 탐색 사용 하기
    
    //                 
    actionBar.setDisplayShowHomeEnabled(true); 
    //                              
    actionBar.setHomeButtonEnabled(true);    
    //                 ,                  
    actionBar.setDisplayHomeAsUpEnabled(true); 
    //     int        ActionBar     ,      customView    
    actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_CUSTOM);
    Action View 를 추가 하 는 방법
    Action Bar 에 서 는 일반적인 Action Item 외 에 도 일반적인 UI 구성 요 소 를 표시 할 수 있 습 니 다.다음 과 같은 두 가지 방법 이 있 습 니 다.
    1.Action Item 을 정의 할 때 android:actionViewClass 속성 을 사용 하여 Aciton View 의 실현 클래스 를 지정 합 니 다.
    2.Action Item 을 정의 할 때 android:actionLayout 속성 을 사용 하여 Action View 에 대응 하 는 보 기 를 지정 합 니 다.
    그림 2 Activity 코드 영역:
    
    public class MainActivity extends Activity {
      @Override
      public void onCreate(Bundle savedInstanceState)
      {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
      }
    
      @Override
      public boolean onCreateOptionsMenu(Menu menu)
      {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
      }
    }
    
    
    menu_main.xml 코드:
    
    <?xml version="1.0" encoding="utf-8" ?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
      <item
        android:id="@+id/search"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:actionViewClass="android.widget.SearchView"/>
      <item
        android:id="@+id/progress"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:actionLayout="@layout/clock"
        />
    </menu>
    
    clock.xml
    
    <?xml version="1.0" encoding="utf-8" ?>
    <AnalogClock
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
    />
    
    그림 3 ActionBar 를 사용 하여 Tab 내 비게 이 션 을 실현 한다.
    ActionBar 를 만 들 고 Tab 내 비게 이 션 을 실현 합 니 다.
    1.ActionBar 의 setNavigation 모드(ActionBar.NAVIGATION 호출MODE_TABS)방법 Tab 내 비게 이 션 사용
    2.ActionBar 의 add()방법 을 호출 하여 Tab 탭 을 여러 개 추가 하고 Tab 탭 마다 이벤트 모니터 를 추가 합 니 다.
    MainActivity 코드:
    
    public class MainActivity extends Activity implements
      ActionBar.TabListener
    {
      private static final String SELECTED_ITEM = "selected_item";
      @Override
      public void onCreate(Bundle savedInstanceState)
      {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final ActionBar actionBar = getActionBar();
        //   ActionBar     :Tab  
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        //       Tab ,    Tab         
        actionBar.addTab(actionBar.newTab().setText("   ")
          .setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("   ")
          .setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("   ")
          .setTabListener(this));
      }
      @Override
      public void onRestoreInstanceState(Bundle savedInstanceState)
      {
        if (savedInstanceState.containsKey(SELECTED_ITEM))
        {
          //             Fragment 
          getActionBar().setSelectedNavigationItem(
              savedInstanceState.getInt(SELECTED_ITEM));
        }
      }
      @Override
      public void onSaveInstanceState(Bundle outState)
      {
        //       Fragment       Bundle 
        outState.putInt(SELECTED_ITEM,
            getActionBar().getSelectedNavigationIndex());
      }
      @Override
      public void onTabUnselected(ActionBar.Tab tab,
        FragmentTransaction fragmentTransaction)
      {
      }
      //    Tab         
      @Override
      public void onTabSelected(ActionBar.Tab tab,
        FragmentTransaction fragmentTransaction)
      {
        //       Fragment  
        Fragment fragment = new DummyFragment();
        //     Bundle  ,   Fragment    
        Bundle args = new Bundle();
        args.putInt(DummyFragment.ARG_SECTION_NUMBER,
            tab.getPosition() + 1);
        //  fragment    
        fragment.setArguments(args);
        //   FragmentTransaction  
        FragmentTransaction ft = getFragmentManager()
            .beginTransaction();
        //   fragment   Activity  container  
        ft.replace(R.id.container, fragment);
        //     
        ft.commit();
      }
      @Override
      public void onTabReselected(ActionBar.Tab tab,
        FragmentTransaction fragmentTransaction)
      {
      }
    }
    
    DummyFragment.java 코드:
    간단 한 Fragment,TextView 구성 요소 만 표시
    
    public class DummyFragment extends Fragment
    {
      public static final String ARG_SECTION_NUMBER = "section_number";
      //           Fragment   View  
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
         Bundle savedInstanceState)
      {
        TextView textView = new TextView(getActivity());
        textView.setGravity(Gravity.CENTER_HORIZONTAL);
        //      Fragment      Bundle
        Bundle args = getArguments();
        //   TextView     
        textView.setText(args.getInt(ARG_SECTION_NUMBER) + "");
        textView.setTextSize(30);
        //    TextView
        return textView;
      }
    }
    
    그림 4 Android 3.0 이전 Fragment 지원
    Android 3.0 이전의 Fragment 는 app.Fragment 에서 계승 하 는 것 이 아니 라 v4.app.Fragment 에서 계승 하 는 것 입 니 다.그 밖 에 v4.app.Fragment 는 다음 과 같은 조합 류 를 제공 합 니 다.
    1.FragmentActivity
    2.ViewPager
    3.FragmentPagerAdapter
    4.PagerTitleStrip
    Main.xml 코드:
    
    <?xml version="1.0" encoding="utf-8" ?>
    <android.support.v4.view.ViewPager
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/pager"
      android:layout_width="match_parent"
      android:layout_height="match_parent">
      <!--           -->
      <android.support.v4.view.PagerTitleStrip
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:background="#33b5e5"
        android:textColor="#fff"
        android:paddingTop="4dp"
        android:paddingBottom="4dp" />
    </android.support.v4.view.ViewPager>
    
    MainActivity 코드:
    
    public class MainActivity extends FragmentActivity
      implements ActionBar.TabListener
    {
      ViewPager viewPager;
      ActionBar actionBar;
      @Override
      public void onCreate(Bundle savedInstanceState)
      {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //   ActionBar  
        actionBar = getActionBar();
        //   ViewPager
        viewPager = (ViewPager) findViewById(R.id.pager);
        //     FragmentPagerAdapter  ,      ViewPager    Fragment
        FragmentPagerAdapter pagerAdapter = new FragmentPagerAdapter(
          getSupportFragmentManager())
        {
          //    position   Fragment
          @Override
          public Fragment getItem(int position)
          {
            Fragment fragment = new DummyFragment();
            Bundle args = new Bundle();
            args.putInt(DummyFragment.ARG_SECTION_NUMBER, position + 1);
            fragment.setArguments(args);
            return fragment;
          }
          //        i   Adapter       Fragment
          @Override
          public int getCount()
          {
            return 3;
          }
          //            Fragment   
          @Override
          public CharSequence getPageTitle(int position)
          {
            switch (position)
            {
              case 0:
                return "   ";
              case 1:
                return "   ";
              case 2:
                return "   ";
            }
            return null;
          }
        };
        //   ActionBar  Tab    
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        //   pagerAdapter        Fragment
        //   Fragment      Tab  
        for (int i = 0; i < pagerAdapter.getCount(); i++)
        {
          actionBar.addTab(actionBar.newTab()
            .setText(pagerAdapter.getPageTitle(i))
            .setTabListener(this));
        }
        //  ViewPager    FragmentPagerAdapter
        viewPager.setAdapter(pagerAdapter); // ①
        //  ViewPager         
        viewPager.setOnPageChangeListener(
          new ViewPager.SimpleOnPageChangeListener()
          {
            //  ViewPager   Fragment          
            @Override
            public void onPageSelected(int position)
            {
              actionBar.setSelectedNavigationItem(position);
            }
          });
      }
      @Override
      public void onTabUnselected(ActionBar.Tab tab,
        FragmentTransaction fragmentTransaction)
      {
      }
      //    Tab         
      @Override
      public void onTabSelected(ActionBar.Tab tab,
         FragmentTransaction fragmentTransaction)
      {
        viewPager.setCurrentItem(tab.getPosition()); // ②
      }
      @Override
      public void onTabReselected(ActionBar.Tab tab,
        FragmentTransaction fragmentTransaction)
      {
      }
    }
    
    그림 5 Action Bar 를 사용 하여 드 롭 다운 내 비게 이 션 을 실현 한다.
    Action Bar 를 만 들 고 드 롭 다운 내 비게 이 션 절 차 를 실현 합 니 다.
    1:ActionBar 의 actionBar.setNavigation Mode(ActionBar.NAVIGATION 호출MODE_LIST)방법 드 롭 다운 목록 내 비게 이 션 설정
    2:ActionBar 의 setListNavigationCallbacks(Spinner Adapter adapter,ActionBar.OnNavigationListener callback)방법 으로 여러 목록 항목 을 추가 하고 목록 항목 마다 감청 이 벤트 를 설정 합 니 다.
    MainActivity 코드 영역:
    
    public class MainActivity extends Activity implements
        ActionBar.OnNavigationListener
    {
      private static final String SELECTED_ITEM = "selected_item";
      @Override
      public void onCreate(Bundle savedInstanceState)
      {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final ActionBar actionBar = getActionBar();
        //   ActionBar      
        actionBar.setDisplayShowTitleEnabled(true);
        //       ,  List  
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
        //  actionBar  ArrayAdapter
        actionBar.setListNavigationCallbacks(
          new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1,
            android.R.id.text1, new String[]
            {"   ","   ","   " }), this);
      }
      @Override
      public void onRestoreInstanceState(Bundle savedInstanceState)
      {
        if (savedInstanceState.containsKey(SELECTED_ITEM))
        {
          //             Fragment 
          getActionBar().setSelectedNavigationItem(
              savedInstanceState.getInt(SELECTED_ITEM));
        }
      }
      @Override
      public void onSaveInstanceState(Bundle outState)
      {
        //       Fragment       Bundle 
        outState.putInt(SELECTED_ITEM,
            getActionBar().getSelectedNavigationIndex());
      }
      //              
      @Override
      public boolean onNavigationItemSelected(int position, long id)
      {
        //       Fragment  
        Fragment fragment = new DummyFragment();
        //     Bundle  ,   Fragment    
        Bundle args = new Bundle();
        args.putInt(DummyFragment.ARG_SECTION_NUMBER, position + 1);
        //  fragment    
        fragment.setArguments(args);
        //   FragmentTransaction  
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        //   fragment   Activity  container  
        ft.replace(R.id.container, fragment);
        //     
        ft.commit();
        return true;
      }
    }
    
    Android 에서 Action Bar 의 사용 은 기본적으로 여기까지 입 니 다.앞으로 프로젝트 에 문제 가 생기 면 바로 업데이트 할 것 입 니 다.질문 이 있 으 면 댓 글 을 환영 합 니 다.
     읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

    좋은 웹페이지 즐겨찾기