本文实现的是自定义设置字体大孝字体颜色、背景颜色,然后通过一键全部修改整个视图内所有的TextView、EditText、Button的字体大孝字体颜色、背景颜色。
实现的逻辑:通过遍历View的方式,判断View是否是TextView、EditText和Button类型,如果是的话,就修改。
代码如下:
1、xml布局文件,文件名:test4.xml,内容如下:
[html]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/mainLayout">
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText android:id="@+id/fontSize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="30"
android:hint="请输入数字"/>
<Button android:id="@+id/ChangeSize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="改变字体"/>
</LinearLayout>
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText android:id="@+id/fontColor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#ffffff"
android:hint="请输入字体颜色"/>
<Button android:id="@+id/ChangeColor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="改变字体颜色" />
</LinearLayout>
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText android:id="@+id/bgColor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#ff0000"
android:hint="请输入背景颜色"/>
<Button android:id="@+id/ChangeBgColor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="改变背景颜色"/>
</LinearLayout>
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView android:id="@+id/TextView01"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:text="top"
android:gravity="top"
android:textColor="#ffffff"
android:background="#00ff00"
android:layout_margin="2px"/>
<TextView android:id="@+id/TextView02"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:text="bottom"
android:gravity="bottom"
android:textColor="#ffffff"
android:background="#00ff00"
android:layout_margin="2px"/>
<TextView android:id="@+id/TextView03"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:text="left"
android:gravity="left"
android:textColor="#ffffff"
android:background="#00ff00"
android:layout_margin="2px"/>
<TextView android:id="@+id/TextView04"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:text="right"
android:gravity="right"
android:textColor="#ffffff"
android:background="#00ff00"
android:layout_margin="2px"/>
<TextView android:id="@+id/TextView05"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:text="center_vertical"
android:gravity="center_vertical"
android:textColor="#ffffff"
android:background="#00ff00"
android:layout_margin="2px"/>
<TextView android:id="@+id/TextView06"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:text="fill_vertical"
android:gravity="fill_vertical"
android:textColor="#ffffff"
android:background="#00ff00"
android:layout_margin="2px"/>
<TextView android:id="@+id/TextView07"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:text="center_horizontal"
android:gravity="center_horizontal"
android:textColor="#ffffff"
android:background="#00ff00"
android:layout_margin="2px"/>
<TextView android:id="@+id/TextView08"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:text="fill_horizontal"
android:gravity="fill_horizontal"
android:textColor="#ffffff"
android:background="#00ff00"
android:layout_margin="2px"/>
<TextView android:id="@+id/TextView09"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:text="center"
android:gravity="center"
android:textColor="#ffffff"
android:background="#00ff00"
android:layout_margin="2px"/>
<TextView android:id="@+id/TextView10"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:text="fill"
android:gravity="fill"
android:textColor="#ffffff"
android:background="#00ff00"
android:layout_margin="2px"/>
<TextView android:id="@+id/TextView11"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:text="clip_vertical"
android:gravity="clip_vertical"
android:textColor="#ffffff"
android:background="#00ff00"
android:layout_margin="2px"/>
<TextView android:id="@+id/TextView12"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:text="clip_horizontal"
android:gravity="clip_horizontal"
android:textColor="#ffffff"
android:background="#00ff00"
android:layout_margin="2px"/>
</LinearLayout>
</LinearLayout>
2、实现的代码文件:MainActivity.java,代码如下:
[java]
package org.shuxiang.test;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MainActivity extends Activity{
private LinearLayout mainLayout;
private Button changeSize, changeColor, changeBgColor;
private EditText fontSize, fontColor, bgColor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.test4);
mainLayout = (LinearLayout) findViewById(R.id.mainLayout);
changeSize = (Button) findViewById(R.id.ChangeSize);
fontSize = (EditText) findViewById(R.id.fontSize);
changeSize.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
setFontSize(mainLayout, Float.parseFloat(fontSize.getText().toString()));
}
});
changeColor = (Button) findViewById(R.id.ChangeColor);
fontColor = (EditText) findViewById(R.id.fontColor);
changeColor.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
int color = Integer.parseInt(fontColor.getText().toString().replace("#", ""), 16);
int red = (color & 0xff0000) >> 16;
int green = (color & 0x00ff00) >> 8;
int blue = (color & 0x0000ff);
setFontColor(mainLayout, Color.rgb(red, green, blue));
}
});
changeBgColor = (Button) findViewById(R.id.ChangeBgColor);
bgColor = (EditText) findViewById(R.id.bgColor);
changeBgColor.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
int color = Integer.parseInt(bgColor.getText().toString().replace("#", ""), 16);
int red = (color & 0xff0000) >> 16;
int green = (color & 0x00ff00) >> 8;
int blue = (color & 0x0000ff);
setBgColor(mainLayout, Color.rgb(red, green, blue));
}
});
}
/**
* 改变字体
* @param v
* @param fontSize
*/
public void setFontSize(View v, float fontSizeValue)
{
if(v instanceof TextView)
{
((TextView) v).setTextSize(fontSizeValue);
}
else if(v instanceof EditText)
{
((EditText) v).setTextSize(fontSizeValue);
}
else if(v instanceof Button)
{
((Button) v).setTextSize(fontSizeValue);
}
else
{
int vChildCount = ((ViewGroup) v).getChildCount();
for(int i=0; i<vChildCount; i++)
{
View v1 = ((ViewGroup) v).getChildAt(i);
setFontSize(v1, fontSizeValue);
}
}
}
/**
* 改变字体颜色
* @param v
* @param fontSize
*/
public void setFontColor(View v, int fontColorValue)
{
if(v instanceof TextView)
{
((TextView) v).setTextColor(fontColorValue);
}
else if(v instanceof EditText)
{
((EditText) v).setTextColor(fontColorValue);
}
else if(v instanceof Button)
{
((Button) v).setTextColor(fontColorValue);
}
else
{
int vChildCount = ((ViewGroup) v).getChildCount();
for(int i=0; i<vChildCount; i++)
{
View v1 = ((ViewGroup) v).getChildAt(i);
setFontColor(v1, fontColorValue);
}
}
}
/**
* 改变背景字体
* @param v
* @param fontSize
*/
public void setBgColor(View v, int bgColorValue)
{
if(v instanceof TextView)
{
((TextView) v).setBackgroundColor(bgColorValue);
}
else if(v instanceof EditText)
{
((EditText) v).setBackgroundColor(bgColorValue);
}
else if(v instanceof Button)
{
((Button) v).setBackgroundColor(bgColorValue);
}
else
{
int vChildCount = ((ViewGroup) v).getChildCount();
for(int i=0; i<vChildCount; i++)
{
View v1 = ((ViewGroup) v).getChildAt(i);
setBgColor(v1, bgColorValue);
}
}
}
作者:AMinfo