Android在Activity中动态增加xml自定义样式布局控件(引用xml布局文件和循环增加控件)
工程目录:
MainActivity
package com.example.test1121;import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ActionBar bar=getSupportActionBar();bar.hide();//增加XML样式控件布局final LayoutInflater inflater = LayoutInflater.from(this);//被插入的布局final LinearLayout layout1 = (LinearLayout) findViewById(R.id.linearLayout);//插入的布局LinearLayout layout2 = (LinearLayout) inflater.inflate(R.layout.btn_layout, null).findViewById(R.id.btn_layout);layout1.addView(layout2);//动态增加自定义xml样式控件String s="我是动态增加的自定义xml样式按钮";char c[]=s.toCharArray();for(char t:c){final Button btn=new Button(getApplicationContext());btn.setBackgroundResource(R.drawable.btn_style);btn.setText(""+t);btn.setTextSize(12);btn.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {btn.setWidth(72);btn.setHeight(72);v.setMinimumHeight(72);v.setMinimumWidth(72);}});layout2.addView(btn);//之所以在这里回调onclick是因为在绘制图形时有一个绘制时间,get/setHeight、get/setWidth来设置控件会显示高宽为0,用了好多方法,只有这个方法有效btn.callOnClick();}}
}
btn_style.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!--按下--><item android:state_pressed="true"><shape><gradient android:startColor="#90CAF9" android:endColor="#90CAF9"android:angle="270" /><stroke android:width="1px" android:color="#0088F1FF" /><corners android:radius="25dip" /><padding android:left="10dp" android:top="10dp"android:right="10dp" android:bottom="10dp" /><size android:height="10dp" android:width="10dp"/><sizeandroid:width="10dp" android:height="10dp" /></shape></item><!--抬起--><item><shape><gradient android:startColor="#C5E1A5" android:endColor="#C5E1A5"android:angle="180" /><stroke android:width="1px" android:color="#00111010" /><corners android:radius="25dip" /><padding android:left="0dp" android:top="0dp"android:right="0dp" android:bottom="0dp" /><sizeandroid:width="10dp" android:height="10dp" /></shape></item>
</selector>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><HorizontalScrollViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:scrollbars="none"><LinearLayoutandroid:id="@+id/linearLayout"android:layout_width="match_parent"android:layout_height="36dp"android:gravity="center"android:orientation="horizontal"></LinearLayout></HorizontalScrollView></LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
btn_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/btn_layout"android:layout_width="wrap_content"android:layout_height="wrap_content"><Buttonandroid:id="@+id/btn0"android:background="@drawable/btn_style"android:layout_width="34sp"android:textSize="12dp"android:layout_height="34sp"android:text="1"/><Buttonandroid:id="@+id/btn1"android:background="@drawable/btn_style"android:layout_width="34sp"android:textSize="12dp"android:layout_height="34sp"android:text="2"/><Buttonandroid:id="@+id/btn2"android:background="@drawable/btn_style"android:layout_width="34sp"android:textSize="12dp"android:layout_height="34sp"android:text="3"/><Buttonandroid:id="@+id/btn3"android:background="@drawable/btn_style"android:layout_width="34sp"android:textSize="12dp"android:layout_height="34sp"android:text="4"/>
</LinearLayout>
以上就是在Android的Activity中动态增加布局和控件的两种方法。
大致思路:
**第一种:**在主布局下增加另外一个xml布局文件。在Activity中可以通过findViewById改变另一个xml文件中的控件来使该控件在主布局中相应地改变。
**第二种:**在主布局下动态增加多个自定义样式控件。
Android在Activity中动态增加xml自定义样式布局控件(引用xml布局文件和循环增加控件)相关推荐
- Android之在Activity中动态得到Adapter类中数据
1.问题 Activity中动态得到Adapter数据 2.解决办法 在Adapter中写入接口 Class Adapter {Interface A {void onClick(int a, int ...
- Android开发-Activity中“android:exported“属性的作用,以及“Permission Denial: starting Intent“错误解决
如何在一个应用程序中,启动另外一个应用程序?最近正有这样的需求,也踩了一个小坑.本节介绍使用Activity中"android:exported"属性来实现这种访问. Activi ...
- android在activity中锁屏解锁后重走OnCreate的问题的解决办法
在项目中,遇到了需要在某个activity中根据不同的情况下设置为横屏或竖屏,而且不因重力感应改变方向.因此刚开始我没有在manifest里指定方向,而是在代码中强制设置屏幕的方向 setReques ...
- Android学习之复选框checkbox自定义样式以及调整图片大小
1.自定义样式: 下载复选框样式图:https://www.iconfont.cn/home/index?spm=a313x.7781069.1998910419.2 图片重命名为英文(否则找不到)并 ...
- 【Android】代码中动态设置 drawable 背景
如图这样的效果,我们平时直接可以在 xml 写死. 写法很简单. <?xml version="1.0" encoding="utf-8"?>< ...
- java 类加载 apk_在Android的App中动态的加载Java类
原文的地址:http://yenliangl.blogspot.com/2009/11/dynamic-loading-of-classes-in-your.html 我正在编写一个应用程序能够加载别 ...
- android onresume函数,android - 在Activity中重新创建后未调用onResume
在应用程序设置中进行某些更改时,我在recreate的onActivityResult中调用MainActivity.重新创建后,不调用onResume. 我也收到错误:E/ActivityThrea ...
- android 动态矩形条,android – 从相机中动态检测不同形状(圆形,方形和矩形)?
更新:这个StackOverflow帖子(包含一些很好的样本图片)似乎至少解决了你的问题的 circles detection部分.他指出的优秀文章的参考资料可以在 wiki page上找到(不幸的是 ...
- 如何在jquery中动态添加!important样式
今天改bug时候出现了一个bug,在js中修改样式时加入 !important,但是 html中没有该样式, 错误写法: $('#confirm').css({'background':'#f5f5f ...
最新文章
- JavaScript实现combine With Repetitions结合重复算法(附完整源码)
- Linux-2.6.20的cs8900驱动分析
- 服务降级的概念及应用手段
- 12产品经理要懂的-人性满足思维
- iPhone 诈骗又出新招,别看见弹窗就输密码
- php5d,php挖洞基础知识篇以及防范方法
- 遗传算法实例(matlab编程实现)
- 日历问题 —— C++
- eclipse安装及配置android基础教程
- 常用的Transformation
- iOS开发-简单图片背景替换 实现抠图效果
- python中for c in s是什么意思_以下程序s=3for c in Python:s=s+2print(s)的输出结果是:()...
- 要来了!国内安卓统一推送标准将于 今年3 月开启测试
- 1677. 发票中的产品金额
- Photon Socket 术语表
- SyntaxError: Non-UTF-8 code starting with '\xca' in file main.py on line 3, but no encoding declared
- G++ + OpenCV 编译
- Qt论坛和博客网址大全
- Ubuntu安装阿里云国内源
- 算法竞赛进阶指南——队列学习笔记