2 xml android invisible textview
嘿,这是我第一次尝试这样的事情,我不知道这是否接近最好的方法,但我觉得它会起作用.我正在尝试浏览XML布局文件并将所有内容设置TextView为INVISIBLE.当调用以下方法时,我得到一个NullPointerException
public void numPlayerSetup(){
{
for(int i = 3; i <= 6; i++)
for(int z = 2; z <= 10; z++){
int resID = getResources().getIdentifier("TextView"+Integer.toString(z) + Integer.toString(i), "id", this.getPackageName());
if(resID != 0){
TextView text = (TextView) this.findViewById(resID);
text.setVisibility(View.INVISIBLE);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您有任何建议,请告诉我.谢谢!
嗯,ids会改变吗?如果没有,只需设置一个int [] TextView ID,然后循环遍历这些ID,例如:
int[] ids = {
R.id.tv1, R.id.tv2, R.id.tv3 //...
}
for(int i : ids) {
TextView tv = (TextView)findViewById(i);
tv.setVisibility(View.INVISIBLE);
}
Run Code Online (Sandbox Code Playgroud)
我绝对不会尝试使用反射,它的效率远远低于以其他方式进行反射.如果您提前不知道TextView的ID,为什么不尝试这样的事情(假设您的根布局是RelativeLayout):
RelativeLayout root =(RelativeLayout)findViewById(R.id.root); for(int i = 0; i <root.getChildCount(); i ++){View v = findViewById(i); if(v instanceof TextView){((TextView)v).setVisibility(View.INVISIBLE); }}
既然你已经接受了,我会假设方法1有效,因为我刚刚意识到我在方法2上非常糟糕.它应该是getChildAt(i),而不是findViewById(i),因为那只是在调用findViewById(0|1|2|...etc).以下是更正后的版本:
RelativeLayout root = (RelativeLayout)findViewById(R.id.root);
for(int i = 0; i < root.getChildCount(); i++) {
View v = root.getChildAt(i);
if(v instanceof TextView) {
((TextView)v).setVisibility(View.INVISIBLE);
}
}
Run Code Online (Sandbox Code Playgroud)
我没有测试过,但理论上听起来不错.:)
| 归档时间: |
|
| 查看次数: |
3233 次 |
| 最近记录: |