노력과 삽질 퇴적물
안드로이드: 사용자 정의 탭뷰 본문
안드로이드 자체에 기본 탭뷰가 있긴 하지만, 탭뷰 버튼에 추가적인 기능을 넣는게 어렵거나 제약이 많습니다.
버튼과 수평 스크롤을 이용한 수동적인 탭뷰로 구현할수도 있겠지만,
탭뷰의 특성중 '선택중인 버튼 색상 변화'에서 손이 더 가게 되죠.
알려드릴 방법은 XML을 이용해 JAVA코드에서 별도로 터치된 버튼에 맞게 색상이 바뀌게 코드를 작성할 필요가 없습니다.
0. 예시 환경
IDE |
ADT (Build: v22.2.1-833290) |
안드로이드 SDK |
adt-bundle-windows-x86-20130917.zip |
android:minSdkVersion | 10 |
Android SDK Build-tools | 16 |
1. 구현
① res/drawable/tab_button.xml -> 터치입력 상태 fa |
<?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/tab_bg" android:state_selected="true"/> <item android:drawable="@drawable/tab_bg" android:state_focused="true"/> <item android:drawable="@drawable/tab_bg" android:state_pressed="true"/> <item android:drawable="@drawable/tab_select"/> </selector> |
② res/layout/layout_tab.xml |
... ... ... <View android:id="@+id/custom_tab0" android:background="@drawable/tab_button" android:layout_width="100dp" android:layout_height="50dp" /> ... ... ... |
③ .java |
... ... ... package com.analoggreen.customedtab; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; public class MainActivity extends Activity implements OnClickListener { final static int TAB_SET0 = 0; final static int TAB_SET1 = 1; final static int TAB_SET2 = 2; private int selectedTab;
View set_1; View set_2; View set_3;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
selectedTab = -1;
set_1 = findViewById(R.id.custom_tab0); set_1.setOnClickListener(this); set_1.setSelected(selectedTab == TAB_SET0);
... ... ... } @Override public void onClick(View v) { switch(v.getId()) { case R.id.custom_tab0 : setTab(0); break; ... ... ... } }
private void setTab(int tab) {//해당 함수로 안 넘어오면 탭의 클릭이 유지되지 않는다. if(selectedTab == tab) { return; } selectedTab = tab;
set_1 = findViewById(R.id.custom_tab0); set_1.setSelected(selectedTab == TAB_SET0); ... ... ... } } ... ... ... |
2. 예제 파일
기타.
혹시나 싶어
android:state_selected="true"등으로 검색하니깐,
아라비안나이트 :: 안드로이드/Android XML Selector 사용 하기
닉스로그 :: android 에서 xml 을 이용해 이미지 전환 효과주기
같은 결과들이 나오는군요.
어떤 코드/방식이건 프로그래머가 응용하기 나름같습니다.
'📂게임개발 note > 모바일 개발' 카테고리의 다른 글
안드로이드: 셀프서명하기 (0) | 2014.03.26 |
---|---|
ANE: 안드로이드용 AIR 개발설정 (0) | 2013.11.28 |
에러: 안드로이드 마켓 등록용 어플 주의사항. (0) | 2013.04.30 |
안드로이드: cocos2d-android (3) (0) | 2013.04.10 |
안드로이드: cocos2d-android (2) (0) | 2013.04.09 |