EditText焦点在布局之间不一致

时间:2011-05-09 22:55:10

标签: 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"
    >
    <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”会失败,因为手机还没有宣布;这就是我的风景xml中发生的事情,但不是肖像。在肖像中它完美地工作,并通过所有四个EditTexts传递焦点,没有任何障碍。如果我将NextFocusDown放入格局中,它将无法编译,说明“找不到与给定名称匹配的资源(在'nextFocusDown'处,值为'@id / phone')。”

解决方案或解释会很棒。我的想法是,我在两个不同的LinearLayouts中有四个文本框,无论哪个有焦点,首先会将它传递给它下面的EditText,跳过其他的。我希望它能够像我在纵向布局中那样工作,当用户点击名称的下一个,焦点移动到手机,当他们点击它接下来它移动到电子邮件等时。我也很好奇为什么它是让这个工作在肖像而不是风景。

2 个答案:

答案 0 :(得分:22)

这是一个非常古老的帖子,但我尽我所能回答它。据我所知,你第一次引用id就把+号,所以在你的: android:nextFocusDown="@id/phone"实际应该是android:nextFocusDown="@+id/phone,因为这是您第一次引用该对象。然后取出你所拥有的+号 android:id="@+id/phone"

希望这可以帮助遇到这种情况的任何人。

答案 1 :(得分:7)

您正在使用“@ id / phone”尝试使用“@ + id / phone”+必须引用对象的ID