首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ListView行为中的EditText

ListView行为中的EditText
EN

Stack Overflow用户
提问于 2013-10-11 16:32:24
回答 4查看 590关注 0票数 2

我发现FocusChange of EditText的行为与EditText在ListView中的不同。我的测试程序有两个EditText。一旦在活动上,列表视图中的另一个。

以下是我在normal Editext中键入文本并失去焦点时的日志

代码语言:javascript
运行
复制
10-11 16:26:32.440: INFO/Test(4317): 1:onFocusChange:false
10-11 16:26:32.490: INFO/Test(4317): 2:onFocusChange:true

以下是我在列表视图中的Editext中键入文本并失去焦点时的日志

代码语言:javascript
运行
复制
10-11 16:28:17.551: INFO/Test(4317): 2:onFocusChange:false
10-11 16:28:17.609: INFO/Test(4317): 2:onFocusChange:true
10-11 16:28:17.679: INFO/Test(4317): 2:onFocusChange:false
10-11 16:28:17.719: INFO/Test(4317): 1:onFocusChange:true

日志告诉我,列表视图中的EditText将触发超过1次的焦点更改。这个行为是错误的还是错误的

我使用的是android 4.0.3 sdk。

下面是XML

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/editText1" android:layout_gravity="center"/>
    <ListView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"

            android:id="@+id/listView"/>
</LinearLayout>

以下是代码

代码语言:javascript
运行
复制
public class EditTextActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setContentView(R.layout.edit_text_activity);

        final EditText editText = (EditText) findViewById(R.id.editText1);
        editText.setWidth(200);
        editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View view, boolean hasFocus) {
                Log.i("Test", "1:onFocusChange:" + hasFocus);
                editText.setText("");
            }
        });

        ListView listView = (ListView) this.findViewById(R.id.listView);
        listView.setAdapter(new BaseAdapter() {
            @Override
            public int getCount() {
                return 1;
            }

            @Override
            public Object getItem(int i) {
                return null;
            }

            @Override
            public long getItemId(int i) {
                return 0;
            }

            @Override
            public View getView(int i, View view, ViewGroup viewGroup) {
                LinearLayout layout = new LinearLayout(viewGroup.getContext());

                final EditText editText = new EditText(viewGroup.getContext());
                editText.setId(1);
                editText.setLayoutParams(new ViewGroup.LayoutParams(200,ViewGroup.LayoutParams.WRAP_CONTENT));
                editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                    @Override
                    public void onFocusChange(View view, boolean hasFocus) {
                        Log.i("Test", "2:onFocusChange:" + hasFocus);
                        editText.setText("");
                    }
                });

                layout.addView(editText);

                return layout;
            }
        });

    }
}
EN

回答 4

Stack Overflow用户

发布于 2013-11-27 18:08:26

edittext丢失和重新获得焦点并不是bug;当您按下键盘上的某个键时,该键将获得焦点,但当您松开该键时,edittext将重新获得焦点。你想做什么?edittext是否用于搜索并添加到列表视图中?

票数 0
EN

Stack Overflow用户

发布于 2015-08-21 00:31:24

为此,您需要使用getter setter方法。我也在下面的链接的帮助下尝试过。https://looksok.wordpress.com/2012/11/03/android-custom-listview-tutorial/祝你好运

票数 0
EN

Stack Overflow用户

发布于 2016-04-26 21:34:51

您必须使用editText在活动中添加以下行

代码语言:javascript
运行
复制
android:windowSoftInputMode="adjustPan"

那你的listView一定有

代码语言:javascript
运行
复制
android:descendantFocusability="beforeDescendants"

来源:http://androidtechnicalblog.blogspot.ch/search/label/ListView

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19313674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档