`
java-mans
  • 浏览: 11392081 次
文章分类
社区版块
存档分类
最新评论

Android 通过按钮Button更改全部的TextView、EditText、Button的字体大小、字体颜色、背景颜色

 
阅读更多

本文实现的是自定义设置字体大小、字体颜色、背景颜色,然后通过一键全部修改整个视图内所有的TextView、EditText、Button的字体大小、字体颜色、背景颜色。

实现的逻辑:通过遍历View的方式,判断View是否是TextView、EditText和Button类型,如果是的话,就修改。
http://blog.csdn.net/aminfo/article/details/7796401

代码如下:

1、xml布局文件,文件名:test4.xml,内容如下:

<?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,代码如下:

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);
	    	}
		}	
    }    

}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics