在android开发中,我们常常会遇到界面布局控件不确定的情况。由于某些功能的原因或者为了体现某些app的特色等这些原因会导致我们在实现界面布局时需要动态去加载一些控件,那么下面就来介绍一下如何用动态加载控件来简单实现QQ中好友印象的功能,其中也会提到如何来动态加载一个XML的配置文件。
那么要实现好友印象的功能,我们需要通过以下这几个步骤:
1.界面一开始需要加载一个EditText和Button控件,用于填写好友印象和添加好友印象;
2.需要新建一个arrays.xml,在xml文件中添加上好友印象标签的背景颜色;
3.在Activity中加载xml文件,获取文件中的颜色,并且为Button控件添加事件监听,实现点击后能够自动生成带有背景颜色的好友印象标签。
按照以上三个步骤,来看下面的代码:
在该配置文件中只随便定义了四种颜色
arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="colorsArray">
<item >#ff78ff</item>
<item >#abcd12</item>
<item >#cdba34</item>
<item >#345677</item>
</string-array>
</resources>
下面来看下怎么来加载配置文件和控件
package com.example.sundyandroidtest;
import java.util.Random;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
public class AutoColorShowActivity extends Activity{
//保存XML文件中的颜色字符串
String[] aColors;
//声明一个线性布局
LinearLayout mLayout = null;
//声明线性布局的width和height
LinearLayout.LayoutParams lpFF;
//声明控件的width和height
LinearLayout.LayoutParams lpWW;
//声明好友印象标签
TextView colorTextView = null;
//声明添加按钮
Button butAdd = null;
//声明好友印象评价输入框
EditText editText = null;
//声明随机数,用于随机标签颜色
Random rand = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//获取颜色字符串数组
aColors = getResources().getStringArray(R.array.colorsArray);
mLayout = new LinearLayout(this);
//设置布局属性
mLayout.setOrientation(LinearLayout.VERTICAL);
lpFF = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
lpWW = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
mLayout.setLayoutParams(lpFF);
//向布局中添加控件
editText = new EditText(this);
mLayout.addView(editText, lpWW);
butAdd = new Button(this);
butAdd.setText("添加");
mLayout.addView(butAdd, lpWW);
setContentView(mLayout);
rand = new Random();
butAdd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//生成一个0到数组长度之间的随机数
int tag = rand.nextInt(aColors.length-1);
//获取EditText中输入的好友印象评价
String info = editText.getText().toString();
//动态生成一个文本标签,并为标签设置文本和颜色
colorTextView = new TextView(AutoColorShowActivity.this);
colorTextView.setText(info);
colorTextView.setTextColor(Color.BLACK);
colorTextView.setTextSize(30f);
colorTextView.setBackgroundColor(Color.parseColor(aColors[tag]));
mLayout.addView(colorTextView, lpWW);
editText.setText("");
//更新布局
mLayout.refreshDrawableState();
}
});
}
}