我有一个带有几个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...
答案 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);
}