首先,我想使用这样的循环设置取消选中所有 8 个复选框:
for (int i=1;i<8;++i){
CheckBox view1 = (CheckBox) findViewById(R.id.CheckBox0+String.valueOf(i));
view1.setChecked(false);
}
它不起作用,但你明白我的意思。如何解决?
第二:使用 Eclipse,我设置了一个表单列表。是什么使应用程序启动时,它会立即显示键盘并专注于编辑字段?我希望键盘仅在用户触摸编辑字段后显示。
第三:我如何设置编辑字段的属性,当用户触摸 Enter 时,焦点不会传递到下一个编辑字段。提前谢谢。
首先,同时提出多个问题并不好;当人们只知道其中一个解决方案时,它会阻止他们回答。
1 - 依赖 ID CheckBox0
, CheckBox1
, CheckBox2
, ...井井有条是非常危险的,而且是不好的做法。在这种情况下,您应该使用 getIdentifier
;这将可靠地获取 CheckBox1
的 ID,然后CheckBox2
等。
for (int i=1;i<8;++i){
CheckBox view1 = (CheckBox) findViewById(getResources().getIdentifier("CheckBox" + i, "id", getPackageName()));
view1.setChecked(false);
}
2 - 您需要为此使用 stateHidden
修饰符:
<activity
android:name="com.example.NoKeyboardActivity"
android:windowSoftInputMode="stateHidden" />
3 - 为此使用imeOptions
; actionNone
是您正在寻找的那个,或者(根据评论)actionDone
启用"完成"按钮。
<TextView
...
android:imeOptions="actionNone" />
为了使资源在每次构建后具有固定 ID,您必须在公共.xml中声明资源,然后您可以按顺序访问 ID。在这里查看
此外,R.id.CheckBox0 是一个 int,所以这样做
findViewById(R.id.CheckBox0+ i)
在公开声明所有复选框后.xml
对于活动清单中的第二个问题,请添加android:windowSoftInputMode="stateHidden"
第三:我认为您必须在 android:nextFocusDown 的布局中引用相同的编辑文本。不确定这是否有效,请尝试一下
> 1 - 请记住,这是Java而不是Javascript,你不能这样做(R.id.CheckBox0+String.valueOf(i))。通常,我会创建一个包含所有 R.id 的 int 数组并遍历它们。
2 - 您也可以使用 android:windowSoftInputMode="stateUnchanged" 来不隐藏键盘(如果它已经显示)。
3 - 这是它应该的方式,但是您可以在编辑文本上使用属性android:imeOptions="actionNone",因此输入按钮将不执行任何操作。