技术标签: Java 代码 修改布局属性 创建View Android
我来通过实例介绍下如何代码中创建view,以及代码中更改view的布局属性。
首先代码中创建一个view:
第一步,new一个view出来
第二步,new一个布局属性出来
第三步,将布局属性绑定到view上
第四步,把view添加到已有的布局中
代码中更改view的布局属性:
第一步:获取要更改的view的布局属性
第二步:修改view的布局属性
接下来我举一个例子:一开始有一个相对布局,相对布局下有一个按钮。点击按钮就会创建一个TextView,新建的TextView处于按钮下方,并设置点击事件,点击TextView后,按钮与TextView位置反转。
具体看如下代码:
<RelativeLayout
android:id="@+id/RL"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button"
android:layout_width="403dp"
android:layout_height="wrap_content"
android:text="我是按钮"
android:layout_gravity="center_horizontal" />
</RelativeLayout>
java代码:
public class MainActivity extends Activity {
Button b;
RelativeLayout RL;
TextView tv;
int id=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = findViewById(R.id.button);
RL = findViewById(R.id.RL);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
tv = new TextView(MainActivity.this);//new一个TextView
final RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);//new一个Relativelayout,宽度填充屏幕,高度适配内容
layoutParams.addRule(RelativeLayout.BELOW,R.id.button);//设置布局属性为在按钮的下方
layoutParams.topMargin = 10;//设置布局属性:view的上边的外部留出10px的距离。(注意这里不是dp)
tv.setLayoutParams(layoutParams);//将设置好的布局属性添加到新建的TextView中
RL.addView(tv);
tv.setBackgroundColor(Color.RED);//设置纯红色背景
tv.setText("我是新建的TextView");
id++;
tv.setId(id);//设置view的id,使用这个方法设置的id不能与现存的所有的view的id重合,且也不能设置为0,这里设置以从1开始累加的方法设置id虽然不出错,但会有重合的风险,具体解决方案请看这篇帖子:https://blog.csdn.net/s13383754499/article/details/81383466
//点击新建的TextView,按钮将会与TextView位置反转
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
layoutParams.removeRule(RelativeLayout.BELOW);//移除TextView处于button下方的属性
RelativeLayout.LayoutParams b_layoutparams = (RelativeLayout.LayoutParams) b.getLayoutParams();//获取按钮的布局属性
b_layoutparams.addRule(RelativeLayout.BELOW,tv.getId());//设置按钮处于TextView的下方
b.setLayoutParams(b_layoutparams);//将布局属性重新赋予给button,实际上这行代码也可不打,因为前面定义b_layoutparams时已经b_layoutparams和b绑定在一起了
}
});
}
});
}
}
实现效果:
文章浏览阅读685次,点赞5次,收藏6次。物理小区识别码(PCI)规划是移动通信网络中下行链路层上,对各覆盖小区编号进行合理配置,以避免PCI冲突、PCI混淆以及PCI 模3干扰等现象。PCI 规划对于减少物理层的小区间互相干(ICI),增加物理下行控制信道(PDCCH)的吞吐量有着重要的作用,尤其是对于基站小区覆盖边缘的用户和发生信号切换的用户,能有效地降低信号干扰,提升用户的体验。
文章浏览阅读690次,点赞10次,收藏16次。根据数据表,当28BYJ-48电机在全步模式下运行时,每步对应于11.25°的旋转。这意味着每转有32步 (360°/11.25° = 32)。链接: https://pan.baidu.com/s/1iucYeZGygwHi3DYeds4gqA?电机转一圈有360°,那么转一圈的脉冲数 = 360 / 5.625 * 64 = 4096 个脉冲。28BYJ-48是一款5线单极步进电机,运行电压为5V。如上图所示,步距角=5.625°/64。一、28BYJ-48 步进电机。二、CubeMX配置。_stm32 步进电机
文章浏览阅读712次,点赞8次,收藏9次。通过将图像切成patch线形层编码成token特征编码的方法,用transformer的encoder来做图像分类multihead和我原有的理解偏差修正。我以为的是QKV会有N块相同的copy(),每一份去做后续的linear等操作。代码里是直接用linear将QKV分为一整个大块,用permute/rearrange的操作切成了N块,f(Q,K)之后再恢复成一整个大块,很强。_vision transformer论文
文章浏览阅读180次。今天在安装好了es,启动和配置花了点时间,这里记录一下。配置elasticsearch.yml,参数大致如下:属性说明cluster.name集群名称,默认elasticsearchnode.name节点名称node.attr.rack节点服务器所在的机架信息path.data索引数据存储路径path.log日志存储路径bootstr..._es安装完
文章浏览阅读1.2k次。【代码】php程序控制打印机自动打印。_php实现打印机打印
文章浏览阅读2.9k次。Frequency Separation for Real-World Super-Resolution[PAPER]_frequency separation for real-world super-resolution
文章浏览阅读927次,点赞19次,收藏24次。在科技论文中,凡是引用前人(包括作者自己过去)已发表的文献中的观点、数据和材料等,都要对它们在文中出现的地方予以标明,并在文末(致谢段之后)列出参考文献表。这项工作叫作参考文献著录。科学研究具有继承性,需要研究者充分了解前人的工作,吸收前人的研究精华,开拓创新。因此,撰写科技论文不可避免地要引用、参考别人的文献。论文列参考文献,一是交代作者的研究背景,反映出真实的科学依据,介绍他人的研究成果,又便于感兴趣的读者查阅,进行深入研究。
文章浏览阅读2.4k次。插件项目中需要打印的地方全部使用idea的logger类import com.intellij.openapi.diagnostic.Logger;/** * @Author: XIELINHUA * @Date: 2019/7/23 12:28 */public class ApkTools extends DumbAwareAction { private static..._idea 导出安卓日志
文章浏览阅读280次。要先搞清楚这三者区别首先需要给文章点个赞。呸呸呸,说错了,需要先弄明白什么是迭代,先补充一下迭代的概念在进入正题的讲解。迭代:像list,tuple,dict这样的数据类型,我们通过for...in...语法从中依次拿到数据进行使用,这样的遍历过程,就叫做迭代正文开始1,可迭代对象简单来说,某个对象内部具有__iter__方法,那么它就是可迭代对象(Iterable)。全剧终!事情..._请说一下迭代器,可迭代对象,生成器的定义,区别,优缺点。
文章浏览阅读8.3k次,点赞4次,收藏8次。关于Delphi/Object PascalDelphi是一种基于 Object Pascal 的编程语言,用于桌面、移动、Web 和控制台软件开发。在 1995 年首次亮相之前的最初开发过程中,Delphi 是一种尚未命名的产品的代号。function DigitSum(AValue: Int64): Integer;begin if AValue mod 10 = AValue then Result := AValue else Result := (AVa.._delphi/object pascal
文章浏览阅读3.7k次,点赞5次,收藏5次。el-upload 上传文件,去掉默认动画效果。_去除el-upload上传动画
文章浏览阅读776次。CenOS7 离线安装Mysql5.7 (rpm)_centos离线安装mysql5.7