将焦点设置到Android EditText

3

我有一个EditText的问题,在我的应用程序中,我需要使用条形码扫描仪获取它的编码,当CCBB插入ET时,焦点会转移到ListView上,但我尝试使用以下代码返回焦点:

et.requestFocus();

但是焦点没有从ListView移开,我还尝试禁用ListView的焦点。

在应用程序中,我有一个TTS线程,每15秒播放一次语音,我将et.requestFocus()放在了线程中,但不起作用。

谢谢!


我已经用这个XML代码实现了它:

<EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:ems="10"
        android:hint="@string/ccbb"
        android:id="@+id/codigobarra"
        android:nextFocusDown="@id/codigobarra"/>

您是否已设置 android:descendantFocusability="blocksDescendants"? - user3040153
如果您使用了requestWindowFeature(Window.FEATURE_NO_TITLE);,请将其删除。 - Rajan1404930
2个回答

2

试试这个。它会帮助你。

listview.post(new Runnable() {
  @Override
  public void run() {
      et.requestFocus();
      et.setFocusable(true);
      et.setFocusableInTouchMode(true);
  }

0
请在listItem的父视图中添加此android:descendantFocusability="blocksDescendants"属性,并在EditText中添加android:focusableInTouchMode="true",如下所示的XML。
<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:descendantFocusability="blocksDescendants"
        tools:context="com.cj.myapplication.MainActivity">

        <EditText
            android:id="@+id/editText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:focusableInTouchMode="true"
            android:text="Name" />

    </RelativeLayout>

谢谢!我已经尝试过了,但它不起作用。焦点又改变了。 - Gannon
你可以将EditText的焦点设置为android:focusable="false"。 - Chetan Joshi
如果将EditText更改为android:focusable="false",我将无法将代码条插入EditText中。 - Gannon
我在xml中使用android:nextFocusRight="@id/edittext"来实现。 - Gannon
如果您的布局中有多个EditText,则可以使用此功能来更改焦点,否则无需添加此功能。 - Chetan Joshi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接