Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 编辑文本焦点在布局中不一致_Android_Xml_Orientation - Fatal编程技术网

Android 编辑文本焦点在布局中不一致

Android 编辑文本焦点在布局中不一致,android,xml,orientation,Android,Xml,Orientation,我有两个不同的main.xml文件,一个用于纵向,一个用于布局。每一个在Scrollview的RelativeLayout中都有此代码 <LinearLayout android:id="@+id/name_phone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/acquire" >

我有两个不同的main.xml文件,一个用于纵向,一个用于布局。每一个在Scrollview的RelativeLayout中都有此代码

<LinearLayout
    android:id="@+id/name_phone"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/acquire"
    >
    <EditText
        android:id="@+id/name"
        android:inputType="textPersonName"
        android:layout_weight="1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="observer name"
        android:nextFocusDown="@id/phone"
        android:background="@android:drawable/editbox_background"               
        />
    <EditText
        android:id="@+id/phone"
        android:inputType="phone"
        android:layout_weight="1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="phone number"
        android:nextFocusDown="@id/phone"
        android:background="@android:drawable/editbox_background"
        />
    </LinearLayout>

等等

奇怪的是:据我所知,您不应该能够在xml中引用尚未发生的事情,因此android:nextFocusDown=“@id/phone”应该会失败,因为phone尚未声明;这就是在我的横向xml中发生的事情,而不是在纵向xml中。在“纵向”中,它工作完美,并将焦点毫无障碍地传递到所有四个文本中。如果我将NextFocusDown放入横向,它将无法编译,并声明“未找到与给定名称匹配的资源(在'NextFocusDown'处,值为'@id/phone')。”


一个解决方案或解释就好了。我的想法是,我在两个不同的线性布局中有四个文本框,任何一个先有焦点的文本框都会将其传递给它下面的编辑文本,跳过其他文本框。我希望它能像我在纵向布局中所做的那样工作,当用户点击下一个名字时,焦点移到手机上,当他们点击下一个名字时,它移到电子邮件上,等等。我也很好奇为什么它允许这项工作在纵向而不是横向。你正在使用“@id/phone”尝试使用“@+id/phone”+是引用对象id所必需的

这是一篇非常古老的帖子,但我正在尽我所能回答它。据我所知,您在第一次引用id时就使用了+符号,因此您的:
android:nextFocusDown=“@id/phone”
实际上应该是
android:nextFocusDown=“@+id/phone
,因为这是您第一次引用该对象。然后在有符号的地方去掉+符号
android:id=“@+id/phone”


希望这能帮助任何遇到这一问题的人。

你错了。“加号(+)表示这是一个新的资源名称,必须创建并添加到我们的资源中(在R.java文件中)。”而我在
android:nextFocusDown=“@id/phone”上确实犯了一个错误“
这与我所问的问题无关。听起来合乎逻辑,但当我不使用+符号时,由于布局文件中的错误,它将无法生成。(找不到与给定名称匹配的资源)我对此评论投了赞成票,因为它是正确的。如果要指定nextFocusDown,并且尚未声明具有该id的元素,则使用@+id表示法。然后,在声明要分配该id的元素时,使用@id表示法。创建id和创建具有该id的元素是两件截然不同的事情。这是正确的。与在relativeLayout中放置视图相同。如果你想使用“@id/”,你必须在ids.xmli中声明id。我在这里回答了这种问题,可能对其他人的建议有帮助,但我已经知道了这个解决方案,我只是尽量避免以编程方式设置gui元素。它也没有回答我的问题,这就是为什么它在一种情况下有效,而在另一种情况下无效。尽管您的评论可能会对其他人有所帮助,但我们仍然非常感谢。这是正确的答案,应该标记为正确!Handle选项卡导航中的示例也说明了这一点。