概述
更新2013-1-8:
R文件存储的id是C语言的十六进制表示法。 以0x开头,在java中,会自动转成10进制。所以,如下等式是成立的:
View m=(View)findViewById(R.id.myview);
ture==(m.getId()==R.id.myview)
故后面setId()的理解,可以不用看啦。呵呵,献丑了
1. view setId方法理解
view.setId()方法和android:id配置一样。除了具有唯一标识外,还有配置android:id的功能.如setId(1)就可以通过findViewById(1)来找到这个View
但是有一点需要强调, 多个组件不能用同一个ID,否则像onclick或者onSelect事件不会响应。
以下是使用RadioButton做的例子: main里存在RadioGroup组件, 通过LayoutFlater生成带style的radioButton,并加入至RadioGroup.为了让它们成为一组,必须赋予不同的id(或者配置文件与代码都不设置id,也可以)
以下是代码生成动态组件,得到的toast结果是对应view的setID里的值
linear = (RadioGroup)findViewById(R.id.linear2);
RadioButton view=(RadioButton)LayoutInflater.from(this).inflate(R.layout.bt, null);
view.setId(3);
linear.addView(view);
RadioButton view2=(RadioButton)LayoutInflater.from(this).inflate(R.layout.bt, null);
view2.setId(4);
linear.addView(view2);
linear.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
Toast.makeText(TestActivity.this,"checkedId:"+checkedId, 100).show();
RadioButton rButton=(RadioButton)linear.findViewById(4);
Toast.makeText(TestActivity.this,"rButton:"+rButton.getId(), 300).show();
}
});
RadioButton的XML配置
<?xml version="1.0" encoding="utf-8" ?>
<RadioButton android:text="隐藏" android:layout_width="fill_parent"
style="@style/rb_darkBlue"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" />
2. 动态添加组件含style样式
一般情况下都有以下需求:
动态添加某个组件 ,可这个组件因为美化的原因,引用了style资源。
相信很多人试过,view.setStyle这个方法是没有的,而完全用一项项设置(如setTextSize setBackgroud等)代码去替换Style属性,非常困难且达到原效果不效。
那么是否有一种解决方法呢?
有,那就是通过LayoutFlater加载为BUTTON的配置文件,配置文件设置好style, 并且不要设置id(多个组件不能使用同一ID)
RadioButton.xml
<?xml version="1.0" encoding="utf-8" ?>
<RadioButton android:text="隐藏" android:layout_width="fill_parent"
xmlns:android=http://schemas.android.com/apk/res/android
style="@style/rb_darkBlue"
android:layout_height="wrap_content" />
动态生成代码:
linear = (RadioGroup)findViewById(R.id.linear2);
RadioButton view=(RadioButton)LayoutInflater.from(this).inflate(R.layout.bt, null);
//view.setId(3);
linear.addView(view);
RadioButton view2=(RadioButton)LayoutInflater.from(this).inflate(R.layout.bt, null);
//view2.setId(4);
linear.addView(view2);
RadioButton view3=(RadioButton)LayoutInflater.from(this).inflate(R.layout.bt, null);
//view3.setId(5);
linear.addView(view3);
最后
以上就是狂野香菇为你收集整理的view方法setId理解及动态添加组件含style样式的全部内容,希望文章能够帮你解决view方法setId理解及动态添加组件含style样式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复