차근차근/Android

actionbar , 하단tab

예쁜꽃이피었으면 2015. 2. 3. 15:03


검색어 : actionbar , 하단tab

split action bar tabs


AndroidMenifest.xml 에

uiOptions=”splitActionBarWhenNarrow” to your <activity> or<application> manifest element.

<manifest ...>

    <activity android:uiOptions="splitActionBarWhenNarrow" ... >

        <meta-data android:name="android.support.UI_OPTIONS"

                   android:value="splitActionBarWhenNarrow" />

    </activity>

</manifest>

SplitActionBar를 static하게 지원하는 코드가 4.0부터 추가되어 있으니, 3.x에서 지원을 하려면, 4.0에서 추가된 Window 객체의 setUiOptions()를 추가하면 됩니다.. 


간단하게 3.x 기반의 코드에 4.0 이상의 기능인 setUiOptions()을 사용하려면.. 


1. @TargetApi(14) 어노테이션을 통해서 4.0의 코드가 들어가 있다고 알려줘서, 컴파일 에러를 피하구요.. 


2. 버전 체크를 통해서 4.0 이상인 경우에만 Window 객체에 setUiOptions()으로 SplitActionBar를 만들어 주면 됩니다.. 


따라서, 아래의 코드를 보시면.. SplitActionBar를 만들어 주는 onLoadSplitActionBar() 에서는 Reflection을 이용해서 4.0 이상의 Window 클래스에서 지원하는 메쏘드인 setUiOptions()를 사용합니다. 


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
    @TargetApi(14)
    private void onLoadSplitActionBar() {
        Window w = getWindow();
        try {
            Method m = w.getClass().getMethod("setUiOptions", new Class[]{ Integer.TYPE });
            m.invoke(w, Integer.valueOf(Window.FEATURE_ACTION_BAR_OVERLAY));
        } catch(Exception e) {
            if(DEBUG)
                ExceptionUtil.getException(e);
        }
    }
     
    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        if(android.os.Build.VERSION.SDK_INT >= 14) {
            this.onLoadSplitActionBar();       
        }    
.......
   }


반응형