覆盖片段或ViewGroup或Widgets的textColorPrimary,textColorSecondary - AppCompact

时间:2015-09-07 07:21:15

标签: android android-fragments android-appcompat android-theme

在AppCompact中,我们使用colorPrimary,colorPrimaryDark,colorAccent,textColorPrimary等属性作为App主题。

我想知道我们可以在片段或ViewGroup中覆盖或更改这些颜色为不同的颜色。比如,我们可以仅为NavigationView更改这些颜色,还是只能为片段中的ExpandableListView更改这些颜色。

修改
我尝试用不同的Style重写,但它不是Overriding

<style name="DarkText" parent="AppTheme">
    <item name="android:textColorPrimary">@color/black</item>

    <item name="android:textColorSecondary">@color/black</item>
</style>

<ExpandableListView
    android:layout_height="match_parent"
    android:theme="@style/DarkText"
    android:groupIndicator="@android:color/transparent"
    android:layout_width="match_parent"/>

我的ChildVeiw in Adapter:

final String childText = (String) getChild(groupPosition, childPosition);

    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) this._context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.list_item, null);
    }

    TextView txtListChild = (TextView) convertView
            .findViewById(R.id.lblListItem);

    txtListChild.setText(childText);

请注意:我不想在我的R.layout.list_item

中使用txtListChild.setTextColor或android:textColor =“@ color / black”更改文字颜色

2 个答案:

答案 0 :(得分:0)

是的,你可以这样做

<ExpandableListView
    android:theme="@style/AnotherTheme"/>

编辑:

将膨胀线更改为此,如果需要,请替换parent

convertView = infalInflater.inflate(R.layout.list_item, parent, false);

答案 1 :(得分:0)

尝试覆盖数组适配器中的getview()

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), 
        android.R.layout.simple_list_item_1, mStringList) {
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = super.getView(position, convertView, parent);
        TextView text = (TextView) view.findViewById(android.R.id.text1);
        text.setTextColor(Color.BLACK);
        return view;
    }
};