搜索框编辑文本失去对文本输入的关注

时间:2018-05-18 03:27:44

标签: android

我有一个带有Text&的列表视图将文本编辑为列表视图项。用户需要输入与各个文本对应的数值。在列表视图的顶部,我们有搜索框来查找列表视图中的特定项目。在单击搜索框(编辑文本)时,键盘会打开,但在输入第一个字母后,视图会失真(搜索框在屏幕中向上移动),键盘不再接受任何输入。以下是代码段:  活动xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    tools:context="com.belinnov.product.tcbroms.activity.StockProductsActivity">

    <ProgressBar
        android:id="@+id/stock_layout_progressBar"
        style="?android:attr/progressBarStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:visibility="invisible" />


    <RelativeLayout
        android:id="@+id/stock_product_search_layout"
        android:layout_width="match_parent"
        android:layout_height="@dimen/search_bar_height">

        <com.xxx.helper.EditTextBackEvent
            android:id="@+id/stock_product_search"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="@dimen/app_margin_small"
            android:background="@drawable/editext_background"
            android:textColor="@android:color/black"
            android:imeOptions="actionSearch"
            android:textSize="@dimen/app_font_medium"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:paddingLeft="@dimen/app_padding_large">
        </com.xxx.helper.EditTextBackEvent>

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/searchsm"
            android:layout_marginTop="@dimen/app_margin_regular"
            android:layout_marginLeft="@dimen/app_margin_regular"/>
    </RelativeLayout>

    <ListView
        android:id="@+id/stock_product_lv"
        android:layout_below="@id/stock_product_search_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:divider="@color/grey"
        android:descendantFocusability="beforeDescendants"
        android:dividerHeight="@dimen/listview_divider_height">

    </ListView>

</RelativeLayout>

列表视图项xml:

?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/stock_product_list_item"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_below="@+id/stock_pr_id"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight=".70"
        android:layout_marginTop="@dimen/app_padding_small"
        android:paddingBottom="@dimen/app_padding_small"
        android:orientation="vertical">

    <TextView
        android:id="@+id/stock_pr_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="@dimen/app_font_medium"
        android:textColor="@android:color/black"
        android:text="aa"/>

     <TextView
        android:id="@+id/stock_product_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:text="@string/hello_world"
        android:textColor="@android:color/black"
        android:textStyle="normal"
        android:textSize="@dimen/app_font_medium"/>
 </LinearLayout>


    <EditText
        android:id="@+id/stock_product_qty_edt"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight=".30"
        android:inputType="numberDecimal"
        android:padding="@dimen/app_margin_regular"
        android:cursorVisible="true"
        android:layout_marginEnd="@dimen/activity_horizontal_margin"
        android:layout_marginTop="@dimen/app_padding_small"
        android:paddingBottom="@dimen/app_padding_small"
        android:background="@drawable/editext_background">
        <requestFocus/>
    </EditText>

</LinearLayout>

我们为列表视图编辑文本指定了android:inputType="numberDecimal"。由于这一点,在点击编辑文本时,普通键盘打开几分之一秒,然后出现数字键盘。搜索框中也没有任何关键字。更改了代码以请求关注搜索框,如下所示:

searchEditText = (EditTextBackEvent) findViewById(R.id.stock_product_search);
        searchEditText.setFocusable(false);
        searchEditText.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                searchEditText.setFocusableInTouchMode(true);
                return false;
            }
        });

通过上述更改,常规软键盘会出现在搜索框中。但是,只要输入第一个字母,结果就会被过滤,整个视图会变形(向上移动,隐藏搜索框)。在按下时,视图显示为常态,然后在另一个字母输入上显示相同的行为。尝试了很多其他的东西,如android:descendantFocusability,但它们似乎都没有起作用。现在苦苦挣扎了一段时间。请告知我是否遗漏了什么。

0 个答案:

没有答案