使用LayoutParams来动态修改组件的相对属性
来源:互联网 发布:javascript template 编辑:程序博客网 时间:2024/05/22 02:51
自从Android问世以来,一直很多人问如何使用Java代码来完成布局文件中的工作,也就是如何用Java代码设置组件的属性。这个问题对于其他的编程语言(如C#、C++、Pascal)可能并不复杂,组件类中都提供了相应的设置属性的方法,但遗憾的是Android SDK中的组件类只提供了很少的设置属性的方法,大多数的属性并没有直接对应的获得和设置属性值的方法。
事实上,使用Java代码可以设置所有的组件属性,所有这一切只需要一个LayoutParams对象。
使用LayoutParams.addRule方法可以设置组件中的所有属性值。最后再调用View.setLayoutParams方法用刚才创建的LayoutParams对象更新View中的相应属性值。
下面是一个例子的源代码:
import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.ViewGroup;import android.widget.Button;import android.widget.RelativeLayout;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dymamic_setting_demo); setButton(); } public void setButton(){ //装载要动态修改的按钮 Button button=(Button)findViewById(R.id.example_button2); //创建一个LayoutParams对象 RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT); //设置android:layout_centerInParent属性,后面不跟其他参数默认True layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT); //利用LayoutParams对象更新Button按钮中相应属性值 button.setLayoutParams(layoutParams); button.setText("修改后的按钮"); }}
其对应的XML布局文件dymamic_setting_demo.xml代码如下
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/example_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="参照按钮"/> <Button android:id="@+id/example_button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ddd "/></RelativeLayout>
本来按照布局文件的属性设置,2个按钮应该是重合的,并且button2 的文本为DDD,在运行后,实际的界面经过Java代码中的动态修改后,按钮2被居中,并且文本被修改了,如下:
这是一个最简单的DEMO ,应该也不需要上传源码了,在这个原理上可以衍生出很多在一些应用中能够常常见到的功能,例如微信在收到语音后就需要动态的更进一个按钮以便用户点击等等。
1 0
- 使用LayoutParams来动态修改组件的相对属性
- 动态修改组件属性
- android动态设置组件LayoutParams
- javascript 动态修改html组件form的action属性
- 动态修改easyui组件tab的title属性
- WindowManager.LayoutParams的属性
- 动态修改dw中的组件属性
- Android抽屉效果(使用LayoutParams来移动View的位置)
- ExtJs 动态修改组件的属性值,并重新渲染组件
- LinearLayout.LayoutParams动态设置子控件属性
- WindowManager.LayoutParams 的各种属性
- WindowManager.LayoutParams 的各种属性
- WindowManager.LayoutParams的type属性
- WindowManager.LayoutParams的使用
- LayoutParams的使用
- LayoutParams的使用场合
- LayoutParams的使用
- Android组件----RelativeLayout相对布局的属性详解
- git-新手入职必备操作流程
- 用html5页面引入了一个jquery插件,实现平板上的向上滑动加载更多的功能
- 表单对象属性过滤选择器
- LeetCode No334. Increasing Triplet Subsequence
- githug详细安装教程
- 使用LayoutParams来动态修改组件的相对属性
- 103. Binary Tree Zigzag Level Order Traversal(技巧:应用层次遍历+记录每层个数)
- 表单选择器
- android应用登录qq不执行回调原因分析
- 算法学习与代码实现3——合并排序
- 支付宝
- Contiki协议栈Rime:匿名广播abc
- jQuery模拟原生态App上拉刷新下拉加载效果代码
- 第一个简单的jquery程序