Android:以编程方式设置编辑文本或文本视图ID

Opt*_*dia 9 android android-layout android-edittext

我正在开发一个应用程序,我在其中以编程方式创建Edittext:

EditText edText = new EditText(this);
edText.setId(1);
edText .setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,0f));
edText .setInputType(InputType.TYPE_CLASS_NUMBER);
edText.setHint("dsgsdgsgs");
tableLayout.addView(edText);
Run Code Online (Sandbox Code Playgroud)

在这里,我将整个行中的编辑文本的ID设置为"1" edText.setId(1);.

但我需要的是 - 我想在字符中设置ID,例如:

edText.setId("edittext_hello");
Run Code Online (Sandbox Code Playgroud)

所以我可以通过该ID访问它.我怎样才能完成这项任务请帮忙.

Dor*_*ori 21

正如其他人所说,你不能这样做.为什么你想/你的要求是什么?

您可以在xml文件中创建一个id并使用它 - 如果您希望它是描述性的.这也是比使用文字更好的方法,int因为你可能会在布局层次结构中与其他视图发生id碰撞(不太可能,但可能).这对我来说似乎是解决问题的最佳/最干净的解决方案.

请参阅http://developer.android.com/guide/topics/resources/more-resources.html#Id

例如in res/values/id.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item
        type="id"
        name="edittext_hello" />
</resources>
Run Code Online (Sandbox Code Playgroud)

然后设置

edText.setId(R.id.edittext_hello);
Run Code Online (Sandbox Code Playgroud)


Man*_*gde 18

您不能将id设置为String.您只能将整数指定为Id.但是如果你想使用String作为id以便于使用 - 那么在res/values/ids.xml文件中

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <item name="edit_text_hello" type="id"/>

</resources>
Run Code Online (Sandbox Code Playgroud)

然后将其用作:

edText.setId(R.id.edit_text_hello);
Run Code Online (Sandbox Code Playgroud)

所以你可以做你需要的.

  • 这是上面那个Dori家伙的答案副本!真的不值得补充吗? (9认同)
  • 我同意:(它被标记为答案 - 有点烦人! (3认同)

Ham*_*atu 4

您不能使用id,charString除 ... 之外的任何其他内容进行设置int,因为idR.java由仅包含int.

您可以使用setTag()代替setId().

使用setTag()如下...

edText.setTag("edittext_hello");
Run Code Online (Sandbox Code Playgroud)