三个问题



首先,我想使用这样的循环设置取消选中所有 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 CheckBox0CheckBox1CheckBox2 , ...井井有条是非常危险的,而且是不好的做法。在这种情况下,您应该使用 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",因此输入按钮将不执行任何操作。

相关内容

  • 没有找到相关文章

最新更新