在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和heightLinearLayout.LayoutParams lpFF;//声明控件的width和heightLinearLayout.LayoutParams lpWW;//声明好友印象标签TextView colorTextView = null;//声明添加按钮Button butAdd = null;//声明好友印象评价输入框EditText editText = null;//声明随机数,用于随机标签颜色Random rand = null;@Overrideprotected 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() {@Overridepublic 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();}});}}

Android动态加载XML文件及控件来简单实现QQ好友印象的功能相关推荐

  1. Android动态加载dex文件/jar包的纯原生代码实现(dex文件由服务端下发)

    介绍原理的文章有很多,我就不再多说,直奔主题: 一.生成dex文件(源码下载地址:https://download.csdn.net/download/wanggangyanqing/18658862 ...

  2. java layoutinflater_使用LayoutInflater动态加载布局和操作控件

    我们知道在Android中通过布局文件来描述软件的界面,而通常在Activity中都是使用setContentView()来将布局显示出来.但是如果我们在非Activity的情况下,而且需要对布局中的 ...

  3. Asp.net 2.0 动态加载其他子目录用户控件问题

    通常我们要在程序中动态加载用户控件: 方法很简单直接在程序里键入: (usercontrol type)a = (usercontrol type)Page.LoadControl("~/x ...

  4. java加载js_[Java教程]javascript如何动态加载js文件

    [Java教程]javascript如何动态加载js文件 0 2016-01-01 00:00:52 javascript如何动态加载js文件: 有时候我们需要根据需要动态加载js文件,本章节就简单介 ...

  5. android jar 加入图片,Android动态加载外部jar包及jar包中图片等资源文件

    Android动态加载外部jar包及jar包中图片等资源文件 Android应用程序由Java开发,因此Java中许多实用的特性,在Android中也有体现.动态加载Class,也就是外部jar包,在 ...

  6. CrossWalk - Android 动态加载so库文件

    转自: https://segmentfault.com/a/1190000002919135 之前看到简书Android客户端使用的编辑器,甚是喜欢,它的优雅以及高性能的特点让我爱不释手,很想自己也 ...

  7. android xml 加载错误提示,加载uixml文件失败 打开wps时显示“加载XML文件失败1

    打开wps时显示"加载XML文件失败." 打开wps时显示"加载XML文件失败1 关闭所有打开的Word文档: 开始 → 运行 → 粘贴上面复制的命令 → 确定. 在打开 ...

  8. Android动态加载进阶 代理Activity模式

    基本信息 作者:kaedea 项目:android-dynamical-loading 技术背景 简单模式中,使用ClassLoader加载外部的Dex或Apk文件,可以加载一些本地APP不存在的类, ...

  9. Android动态加载技术

    基本信息 Author:kaedea GitHub:android-dynamical-loading 我们很早开始就在Android项目中采用了动态加载技术,主要目的是为了达到让用户不用重新安装AP ...

最新文章

  1. Ubuntu解决Nvidia驱动缺失导致的HDMI无法输出问题
  2. b-spline python_SciPyTutorial-一元B样条插值
  3. iOS 自带 MD5转化
  4. mysql 两表管理查询_mysql两表查询
  5. Docker 启动 nacos
  6. java 反射内部匿名内部类_android-反射的使用(反射静态内部类、非静态内部类、匿名内部类等)...
  7. python3 32位_Python 3.6.8软件安装教程
  8. 十一届蓝桥杯国赛 美丽的2-枚举
  9. 凡事多找找自己的原因_布袋除尘器灰斗积粉过多、堵灰该咋办?别急,从这8个方面找原因...
  10. Spring 实战-第一章-基本概念
  11. Android面经分享,失业两个月,五一节前拿到offer
  12. DateTime::diff
  13. FZU2105 Digits Count(按位建线段树)题解
  14. invest模型的python安装方法,两种方法
  15. ProxySQL+MGR实现读写分离和主节点故障无感知切换 - 完整操作记录
  16. 佛罗里达州的最新的野生动物保护区
  17. 计算机室在初中英语教学中的应用,信息技术在初中英语教学中的应用探析
  18. 现阶段中国人工智能生态的优缺点分析
  19. Java中文与Base64互转(解决中文乱码的问题)
  20. 小程序UI——样式的使用-CSS

热门文章

  1. 名企笔试:支付宝红包口令(2015 阿里笔试)
  2. 求三角函数积分的一个技巧公式
  3. MAC地址修改方法(解决teamviewer访问超时限制的问题)亲测可用(文后有惊喜)
  4. js修改元素的keyframes样式
  5. 一份有效的软件测试计划要怎么写?
  6. 刀片式服务器安装centos7.6,安装mysql8.0,jdk,docker,nginx,
  7. 学习用树莓派驱动LED灯闪烁
  8. minitab数据处理软件
  9. python 流水作业调度_流水作业调度问题
  10. 【从零开始学爬虫】通过新浪财经采集上市公司高管信息