如何在隐藏IME候选人后重新传输RecyclerView?

时间:2015-07-22 06:54:49

标签: android android-recyclerview

我尝试使用RecyclerView制作类似聊天的屏幕this

然而,RecyclerView(LinearLayoutManager)并不像我预期的那样工作...... 我该如何解决或避免这个问题?

详情:

此问题也可通过以下简单的活动重现。

activity_main.xml中

<?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">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:layout_width="match_parent"
        android:layout_height="0px"
        android:layout_weight="1"
        android:scrollbars="none"/>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

MainActivity.java

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        initializeRecyclerView();
    }

    private void initializeRecyclerView() {
        RecyclerView recycler = (RecyclerView) findViewById(R.id.recyclerview);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        layoutManager.setReverseLayout(true);
        recycler.setLayoutManager(layoutManager);
        Adapter recyclerAdapter = new Adapter(createItemList());
        recycler.setAdapter(recyclerAdapter);

    }

    private static ArrayList<String> createItemList(){
        ArrayList<String> items= new ArrayList<>();
        for(int i=0;i<20;i++){
            items.add(String.format("item %02d",20-i));
        }
        return items;
    }

}

this movie中显示隐藏IME候选人后, 未完全重新布局。

通过添加&#34; adjustResize&#34;修复此问题。进入MainActivity的windowSoftInputMode,但我不想使用它。需要解决方案而不更改windowSoftInputMode

1 个答案:

答案 0 :(得分:0)

我有类似的问题。对您有用的是创建一个自定义适配器,它具有不同的视图和IMB候选的onbindview。然后,您可以通过更改LayoutView.Params并将高度设置为零来轻松隐藏IME候选项。这就是我做到这一点,听起来像一个解决方法,但对我有用。希望这会有所帮助。