gpt4 book ai didi

android - ICS 中未显示选项卡分隔符

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:17 25 4
gpt4 key购买 nike

我对 .setDividerDrawable() 有疑问,只能在低于 Ice Cream Sandwich 的版本中使用。当我运行模拟器时,选项卡显示完美,但没有分隔符。模拟较低版本的 Android 时没有问题,分隔线显示。

我正在使用此代码创建 TabHost。我不知道是什么让 ICS 退缩了。

list .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) 引用此图像:enter image description here这只是一个 1px 宽的 .jpg 文件。在 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);

}
}

主.xml

<?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>

样式.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>

tab1.xml、tab2.xml、tab3.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>

外观:选项卡背景是 9patch 背景图像。
enter image description here

最佳答案

我遇到了同样的问题,最后我手动添加了分隔符。在选项卡之间添加 ImageView..

public class MyTabApp extends TabActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

ImageView divider = new ImageView(this);
divider.setImageResource(R.drawable.tab_seperator);

TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;

intent = new Intent().setClass(this, Page1.class);
spec = tabHost.newTabSpec("page1").setIndicator(getLayoutInflater().inflate(R.layout.tab1, null))
.setContent(intent);
tabHost.addTab(spec);

tabHost.getTabWidget().addView(divider, LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);

intent = new Intent().setClass(this, Page2.class);
spec = tabHost.newTabSpec("page2").setIndicator(getLayoutInflater().inflate(R.layout.tab2, null))
.setContent(intent);
tabHost.addTab(spec);
}
}

关于android - ICS 中未显示选项卡分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9523083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com