动态更改布局文件中所有TextView的颜色

时间:2016-01-19 11:44:56

标签: android textview

我有一个带有几个TextView的布局文件。我想根据点击动态更改所有这些的颜色。

以下是我仅针对一个TextView执行此操作的方法:

public void openTargets() {
    TextView targets = (TextView)findViewById(R.id.targets);
    targets.setTextColor(ContextCompat
                        .getColor(getApplicationContext(),R.color.colorPrimary));
}

手动对所有TextView执行相同操作将非常繁琐。是否可以减少代码并一次性完成?

这是我的布局文件的外观:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="70dp"
    android:layout_alignParentBottom="true"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <TextView
        style="@style/BottomNavigation"
        android:id="@+id/targets"
        android:text="Targets"
        android:onClick="openTargets"/>

...10 more similar TextViews following in the same LinearLayout...

2 个答案:

答案 0 :(得分:7)

  

动态更改布局文件中所有TextView的颜色

使用Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5 Build/MMB29S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36 Resolution: 360x512 getChildCount更改所有TextView的颜色:

getChildAt

答案 1 :(得分:2)

将一些ID设置为父线性布局为parentLL

然后

for(int i=0; i<parentLL.getChildCount();i++)
{
    Random rnd = new Random();
    int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));


    TextView tv = (TextView)parentLL.getChildAt(i);
    tv.setTextColor(color);
}