공부를 시작한지 얼마 되지 않아 구현하는게 쉽지가 않네요...검색해보고 비슷한 내용이라도 찾을까 했으나 없어서
이렇게 질문글을 올립니다. 많은 분들이 올려주신 소스로...
TabActivity를 상속받아 탭을 선택시 해당 Activity로 넘어가고 이미지의 경우 selector를 통해 선택시
바뀌게 구현 할수 있었습니다.
하지만 선택시 text색이 바뀌게 되어 잘 안보이게 됩니다.
제가 궁금한것은 두가지 입니다.
1. 최초 선택을 코드상에서 tabhost.setCurrentTab(0); 으로 그림의 Profile을 선택되게 했습니다.
하지만 선택이 됐지만 글씨는 메뉴 모두 선택이 안된상태로 되어있습니다. 선택된 상태로 바꾸는 방법이 궁금합니다.
2. 두번째 그림처럼 선택했을때 글씨가 어두워지는데...이부분을 커스터마이징하는 방법이 궁금합니다.
(검색중 폰트변경에 관한 글중에 "그냥가자"님께서 루프를 돌려 TextView를 빼내서 바꾼다고 하셨는데...해보다가 포기했습니다 ㅜㅜ)
매번 눈팅과 검색으로 가급적 해결했지만 이번에는 잘안풀리네요....안드로이드 선배님들의 조언을 구합니다...
답변감사합니다...위사진은 제가 TabActivity로 구현한것 입니다...ㅋㅋ
제가 아이폰 스럽게 UI를 구현하려고 하는데...RadioGroup을 이용한RaidoButton으로도 구현을 해봤고(TextView가 수평배치라 포기 ㅜㅜ)
Button에 이미지와 text를 같이 넣는 방식으로도 해봤지만 Tab이 가장 나아 보였습니다....
text없이 이미지로 다 한다면 다른방법도 좋겠지만 text가 string.xml에서 자유롭게 변경가능하도록 만들기 위해는 이미지+Text가 되어야 해서요....그리고 클릭시에 Activity를 호출하도록 되어 있습니다.
libre2k님 답변 감사합니다...저는 LinearLayout을 상속받는 클래스를 만들어서 setIndicator에서 이너클래스로 text와 image를
셋팅하게 되어 있습니다...
글자색깔이 변경되는 걸 변경 안되게 하고 싶고 변경된다고 해도 클릭했을때 변경되는 부분을 제가 제어를 하고 싶은데 안된다는 질문이었습니다. 알려주신 코드를 살펴봤는데요...레이아웃을 전개한거 외에는 별다른 차이가 없는거 같은데...R.layout.tabs에서 TextView에 대한 설정을 어떻게 하는가요? 텍스트 칼라를 설정해도 클릭했을때 색깔은 바뀌지 않습니다...
제 소스코드의 일부입니다...
intent = new Intent().setClass(this, Menu1.class);
spec = tabhost
.newTabSpec("tab_profile")
.setIndicator( new MyTabView(this, R.drawable.menu1_btn_reset, R.string.menu1)).setContent(intent);
tabhost.addTab(spec);
---------------------------------------------------------------------------------------------------------------------
class MyTabView extends LinearLayout {
public MyTabView(Context c, int drawable, int String) {
super(c);
ImageView iv = new ImageView(c);
iv.setImageResource(drawable);
TextView tv = new TextView(c);
tv.setText(String);
tv.setTextSize(10);
tv.setGravity(0x01); // center
setOrientation(LinearLayout.VERTICAL);
addView(iv);
addView(tv);
}
}
아.. textview의 컬러가 default 값이 들어가 있어서 그런 듯 하네요. color 상태 값(focused, selected, pressed...)을 drawable 폴더에 저장하고 textview의 컬러값을 그것으로 지정해 주면 될 듯 합니다.
위코드의 MyTabView 클래스에서 tv.setTextColor(R.drawable.menu_text_reset); 해주고
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item
android:state_focused="false"
android:state_selected="false"
android:state_pressed="false"
android:textColor="#898989" />
<!-- Focused states -->
<item
android:state_focused="false"
android:state_selected="true"
android:state_pressed="false"
android:textColor="#31A1F5" />
<item
android:state_focused="true"
android:state_selected="false"
android:state_pressed="false"
android:textColor="#31A1F5" />
<item
android:state_focused="true"
android:state_selected="true"
android:state_pressed="false"
android:textColor="#31A1F5" />
<!-- Pressed -->
<item
android:state_pressed="true"
android:textColor="#31A1F5" />
</selector>
이렇게 셀렉터를 만들어서 넣었는데...안되네요 ㅜㅜ
지금 머리속이 복잡하네요...계속 답변 달아주시니 얼른 해결을 해야될터인데...




제가 보기엔... 탭위젯을 쓰지 않고.. 뷰필리프나... 일반 액티비티 이동으로 한거 같기도 한데요..
커스텀 탭위젯은 어렵기두 하구..... 저같은 경우에는 그냥 뷰 필리프 이용해서 저렇게 만들고 있습니다..
일단 하단 메뉴부분과 상단 뷰필리프 부분을 만들어서 아주 유사하게 만들수 있습니다..
버튼을 눌렀을때 처리부분은... 간단하게 setImage로 해서 뷰가 몇번째 뷰인가 체크를 하여 이미지와 글씨색을 변경해 주시면
될거 같구요 ^^;;;
탭위젯을 이용한 답변이 아니라서 죄송합니다...