.setDividerDrawable()에 문제가 있습니다. 아이스크림 샌드위치보다 낮은 버전에서만 작동합니다. 에뮬레이터를 실행하면 탭이 완벽하게 표시되지만 구분선은 표시되지 않습니다. 더 낮은 버전의 안드로이드를 에뮬레이트 할 때 아무런 문제가 없다.ICS에 탭 분할자가 표시되지 않음
이 코드를 사용하여 TabHost를 만듭니다. 나는 이것이 ICS가 움츠 리게 만드는 원인에 대한 단서가 없다. 단지 1 픽셀 폭 .jpg 파일이다
manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sbl.mytabapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:debuggable="true" >
<activity
android:name=".MyTabApp"
android:label="@string/app_name"
android:theme="@style/MyTabAppTheme" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Page1"></activity>
<activity android:name=".Page2"></activity>
<activity android:name=".Page3"></activity>
</application>
</manifest>
MyTabApp.java (R.drawable.divider)이 이미지를 말한다. ICS에서는 표시되지 않습니다.
public class MyTabApp extends TabActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;
tabHost.getTabWidget().setDividerDrawable(R.drawable.divider);
intent = new Intent().setClass(this, Page1.class);
spec = tabHost.newTabSpec("page1").setIndicator(getLayoutInflater().inflate(R.layout.tab1, null))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, Page2.class);
spec = tabHost.newTabSpec("page2").setIndicator(getLayoutInflater().inflate(R.layout.tab2, null))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, Page3.class);
spec = tabHost.newTabSpec("page3").setIndicator(getLayoutInflater().inflate(R.layout.tab3, null))
.setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(0);
}
}
main.xml에 tab1.xml이 tab2.xml는, tab3.xml 모두 같은 참조 스타일을 포함
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTabAppTheme" parent="android:style/Theme">
<item name="android:windowNoTitle">true</item>
</style>
<style name="tablayout" parent="android:style/Theme">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
<item name="android:height">48dp</item>
<item name="android:gravity">center</item>
<item name="android:textColor">@color/font</item>
<item name="android:background">@drawable/tabselector</item>
</style>
<style name="contentlayout" parent="android:style/Theme">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
<item name="android:textColor">@color/font</item>
<item name="android:background">@color/background</item>
</style>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</TabHost>
style.xml. 탭 1 :
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tab1"
style="@style/tablayout" />
tabselector.xml 탭 드로어 블 배경은 9patch 배경 이미지입니다.
<?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:drawable="@drawable/normal" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/selected" />
<!-- Focused states -->
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/normal_focused" />
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/selected_focused" />
<!-- Pressed -->
<item android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/normal_pressed" />
<item android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/selected_pressed" />
</selector>
모양 : 탭 배경은 9 패치 배경 이미지입니다.
정보가 충분하지 않습니다. R.drawable.divider 란 무엇입니까? 탭 표시기보기 및 탭 자체의 레이아웃 XML은 어디에 있습니까? –
알겠습니다. 이해합니다. 더 많은 정보를 추가했습니다. 희망이 도움이됩니다. – Simon