操作栏选项卡指示器未应用自定义样式
actionbar tab indicator is NOT applying custom styles
我有一个带有操作栏选项卡的 viewpager 的问题,基本上我无法将我的任何自定义样式应用到选项卡,这就是我所拥有的
好的,所以这是使用 android studio 1.1 附带的默认选项卡 activity 这里是我拥有的特性列表
- 默认模板使用带片段的 appCompat v4 viewpager
- 我有一个从这里生成的自定义样式 http://jgilfelt.github.io/android-actionbarstylegenerator/,我知道它已被弃用,但它现在仍然可以使用
- 下面是我的activity
代码的部分代码
- min sdk 设置为 21
- 正在使用构建工具 21.2.1
- 并支持库 v4 修订版 22.0
主要活动
public class MainActivity extends ActionBarActivity implements ActionBar.TabListener {
SectionsPagerAdapter mSectionsPagerAdapter;
ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
actionBar.addTab(
actionBar.newTab()
activity_main.xml
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/pager"
android:layout_width="match_parent" android:layout_height="match_parent"
tools:context=".MainActivity" />
我在 styles.xml 中有我的自定义样式,并且我在清单中应用了它们
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.CustomTheme" >
这是我的一小部分样式,我知道它正在尝试更改为红色指示器
<style name="ActionBarTabStyle.Aeroman" parent="@style/Widget.AppCompat.ActionBar.TabView">
<item name="android:background">@drawable/tab_indicator_ab_customTheme</item>
</style>
使用红色指示器颜色
我觉得一切都很好,但正如您在屏幕截图中看到的那样,忽略了这些样式,我知道样式文件中的某些样式已被应用,因为例如我有一个 Theme.AppCompat.Light.DarkActionBar 作为父项,如果我将其更改为 Theme.AppCompat.Light,则 actionBar 变为灰色,因此该部分正在工作,对我来说奇怪的是选项卡指示器是绿色的,我认为它应该是蓝色的,对吗?默认情况下非常薄。
我在 genymotion 模拟器中使用 Nexus 4 和 API 16 进行了测试,在真实设备中使用 Nexus 5 和 android 5.0.1
请帮助理解这一点,我在这里拉扯头发,感谢您的帮助
使用没有android:
前缀的appcompat 属性的名称,即:
<item name="actionBarTabStyle">@style/ActionBarTabStyle.YourProject</item>
我有一个带有操作栏选项卡的 viewpager 的问题,基本上我无法将我的任何自定义样式应用到选项卡,这就是我所拥有的
好的,所以这是使用 android studio 1.1 附带的默认选项卡 activity 这里是我拥有的特性列表
- 默认模板使用带片段的 appCompat v4 viewpager
- 我有一个从这里生成的自定义样式 http://jgilfelt.github.io/android-actionbarstylegenerator/,我知道它已被弃用,但它现在仍然可以使用
- 下面是我的activity 代码的部分代码
- min sdk 设置为 21
- 正在使用构建工具 21.2.1
- 并支持库 v4 修订版 22.0
主要活动
public class MainActivity extends ActionBarActivity implements ActionBar.TabListener {
SectionsPagerAdapter mSectionsPagerAdapter;
ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
actionBar.addTab(
actionBar.newTab()
activity_main.xml
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/pager"
android:layout_width="match_parent" android:layout_height="match_parent"
tools:context=".MainActivity" />
我在 styles.xml 中有我的自定义样式,并且我在清单中应用了它们
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.CustomTheme" >
这是我的一小部分样式,我知道它正在尝试更改为红色指示器
<style name="ActionBarTabStyle.Aeroman" parent="@style/Widget.AppCompat.ActionBar.TabView">
<item name="android:background">@drawable/tab_indicator_ab_customTheme</item>
</style>
使用红色指示器颜色
我觉得一切都很好,但正如您在屏幕截图中看到的那样,忽略了这些样式,我知道样式文件中的某些样式已被应用,因为例如我有一个 Theme.AppCompat.Light.DarkActionBar 作为父项,如果我将其更改为 Theme.AppCompat.Light,则 actionBar 变为灰色,因此该部分正在工作,对我来说奇怪的是选项卡指示器是绿色的,我认为它应该是蓝色的,对吗?默认情况下非常薄。
我在 genymotion 模拟器中使用 Nexus 4 和 API 16 进行了测试,在真实设备中使用 Nexus 5 和 android 5.0.1
请帮助理解这一点,我在这里拉扯头发,感谢您的帮助
使用没有android:
前缀的appcompat 属性的名称,即:
<item name="actionBarTabStyle">@style/ActionBarTabStyle.YourProject</item>