我最近更新到API 24,现在我在工具栏内的AppCompatSpinner上遇到文本颜色问题。
以下是我所说的,请注意" Pils"最顶端是黑色。 Pre API 24这是白色的。 (此外,在不在API 24上的设备上运行此APP,文本显示为白色。)
这是我的build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion '24.0.0'
defaultConfig {
applicationId 'com.baviloworks.braumeister'
minSdkVersion 17
targetSdkVersion 24
versionCode 100
versionName '1.0.0'
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:24.0.0'
compile 'com.android.support:support-v4:24.0.0'
compile 'com.android.support:design:24.0.0'
compile 'com.android.support:cardview-v7:24.0.0'
compile 'com.github.PhilJay:MPAndroidChart:v2.2.3'
}
这是我的style.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="colorPrimaryDark">@color/DarkBlue</item>
<item name="colorAccent">@color/Green</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="customTabText" parent="TextAppearance.Design.Tab">
<item name="android:textSize">13sp</item>
</style>
</resources>
以下是我的工具栏的XML:
<android.support.v7.widget.Toolbar
android:id="@+id/Toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/Blue"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<android.support.v7.widget.AppCompatSpinner
android:id="@+id/Recipe_Selection_Spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:popupBackground="@drawable/spinner_rounded_corners"
android:minWidth="175dp"/>
</android.support.v7.widget.Toolbar>
如果有人能指出我正确的方向,那就太好了!
谢谢:)
我现在试过这个:
cursorAdapter = new SimpleCursorAdapter(getActivity().getApplicationContext(), R.layout.custom_spinner, dbData, recipeNames, recipeTo, 0);
cursorAdapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
recipeLoadSelection.setAdapter(cursorAdapter);
这是自定义微调器:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff" />
但现在文字根本没有出现
答案 0 :(得分:8)
a)无论你做什么,都不要使用应用程序上下文来夸大视图。如果您正在使用SimpleCursorAdapter
,它会使用构造函数中的上下文在内部对视图进行充气。
b)使用工具栏的主题上下文来显示其中的小部件。您的工具栏会覆盖android:theme
属性。您将需要使用此上下文来扩充该工具栏中的任何视图。
而不是getActivity().getApplicationContext()
写getSupportActionBar().getThemedContext()
的意思,它只会起作用。这是正确的方法,它不会硬编码文本颜色。
答案 1 :(得分:1)
创建custom_spinner.xml:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff" />
使用适配器
设置自定义微调器文本ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.spinner_array, R.layout.custom_spinner);
spinner.setAdapter(adapter);
答案 2 :(得分:-1)
我得到了这样的工作:
创建一个新的custom_spinner.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="@style/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:textAlignment="inherit"/>
创建一个新的微调器样式:
<style name="spinnerItemStyle" parent="android:Widget.TextView.SpinnerItem">
<item name="android:textColor">@color/White</item>
</style>