2011-04-26 4 views
0

모두 안녕 각 탭에 표시기에 대한 사용자 지정보기가있는 탭 활동을 작성하려고합니다. 뷰는과 같이 팽창 :Android : TabWidget에서 탭이 포함 된보기를 가져 오는 방법이 있습니까?

LayoutInflater inflater = (LayoutInflater) 
      context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     specIndicatorView = inflater.inflate(R.layout.tab_indicator, null); 

     indicatorIv = (ImageView)specIndicatorView.findViewById(R.id.indicatorImage); 
     indicatorTv = (TextView)specIndicatorView.findViewById(R.id.indicatorText); 

     indicatorIv.setImageDrawable(context.getResources().getDrawable(indicatorImageRes)); 
     indicatorTv.setText(indicatorTextRes); 

문제는 아이 뷰에 정의 된 레이아웃 매개 변수가 영향을 미치지 않는다는 것입니다 그리고 내가가 부모 뷰에 전달하는 방법을 모르기 때문에이다 inflate 메소드.

내가하려는 것은 이미지와 상단에 정렬 된 텍스트가 있고 텍스트가 표시기보기의 하단에 정렬되어 있지만 사용하도록 약간의 조정이 필요합니다. 이 지표 전략. 전체 탭 메커니즘의 소스를 살펴본 결과 상위 뷰를 얻는 방법을 알 수 없었습니다. 어떻게해야하는지 알 수 있습니까? 내가 원하는 것을 얻을 수있는 더 나은 방법이 있습니까?

감사

답변

2

당신은 탭에 대한 모든 코드를 검토했다고 말했습니까? 귀하의 활동에 getTabWidget() (으)로 전화하면 무슨 문제입니까?

+0

안녕 Yoni, 전에 말했듯이, 나는 "보기"개체와 탭 위젯이 필요하지 않습니다. getChildTabViewAt() 메서드를 호출 할 수는 있지만 다음과 같은 두 가지 문제가 있습니다. a) 뷰에서 자식 탭을 만들고 싶지만 자식 탭 뷰를 가져 오면 생성 된 탭에 대해서만 반환하고 b) 이것은 콘텐트 뷰를 반환한다. 나는 더 큰 컨테이너 뷰가 아니라고 생각한다. – ekatz

+0

나는 여기에서 요점을 놓치고 있다고 생각한다. tabSpec의'setIndicator' 메쏘드를 사용하여 탭을위한 커스텀 레이아웃을 팽창 시키려면 레이아웃 인플레이터의 두 번째 인자로'null' 대신에'getTabWidget()'을 사용하십시오. Google IO 2010 예약 앱을 참조하십시오. http://code.google.com/p/iosched/source/browse/trunk/src/com/google/android/apps/iosched/ui/ScheduleActivity.java#147 –

+0

I ' 미안 해요, 당신 말이 맞아요, getTabWidget(). findViewById (android.R.id.tabs)하지만 getTabWidget뿐만 아니라 작동, 탭 위젯은 viewgroup뿐만 아니라 사실을 놓친 ... 감사! – ekatz

0

당신은 탭 활동 중 하나 내에서 TabHost에 액세스하려고합니까? 그렇다면 어린이 활동에서 getParent()을 통해 TabHost으로 이동할 수 있어야합니다.

+0

실제로 부모 작업을 얻지 않고 "보기"개체를 찾고 있는데, TabActivity를 실행하여 인플레이터로 보내면 – ekatz

+0

어떤 'View'개체가 당신입니까? 에 가려고? TabHost? –

+0

tabindicator보기의 컨테이너 인 모든보기 – ekatz

관련 문제