5

在单击按钮时,我试图EditTextRecyclerView. 但不是将 EditText 添加到布局的顶部,从而将 RecyclerView 向下推,而是简单地将其放置在 RecyclerView 的顶部,像这样覆盖它:

在此处输入图像描述

您可以看到“新文本”覆盖了 RecyclerView 的第一项。如何让它在 RecyclerView 上方膨胀,并将 RecyclerView 向下推,以容纳新添加的 EditText?

这是我将 EditText 添加到的 FrameLayout 的 XML:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fab="http://schemas.android.com/apk/res-auto"
android:id="@+id/fragment_my_frame_layout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
    android:id="@+id/my_recycler_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scrollbars="vertical" />

<com.melnykov.fab.FloatingActionButton
    android:id="@+id/button_floating_action"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|right"
    android:layout_margin="16dp"
    android:src="@drawable/ic_action_new"
    fab:fab_colorNormal="@color/primary_dark"
    fab:fab_colorPressed="@color/primary" />

这是我的 FloatingActionButton 的 onClick 方法,我希望在 RecyclerView 上方添加 EditText:

    public void onClick(View v) {
    ViewGroup parent = (ViewGroup) rootView.findViewById(R.id.fragment_my_frame_layout);
    View view = LayoutInflater.from(getActivity()).inflate(R.layout.add_keyword_edittext, parent, true);
}

这是我添加的 EditText 的 XML:

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/edit_text_above_listview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:background="#00000000"
    android:textCursorDrawable="@null"
    android:imeOptions="actionDone"
    android:singleLine="true"
    android:text="New Text" />
4

4 回答 4

6

在框架布局中,所有内容都相互堆叠,如果您希望它位于回收站视图之上,请制作您的布局 LinearLayout 并调用您的情况下LinearLayout.addView(child, index)的索引方法0

更新

因为你有浮动按钮,你应该让你的布局是这样的:

<FrameLayout>
   <LinearLayout>
      <EditText/>//witch will be added later by add view
      <RecyclerView/>
   </LinearLayout>
   <Button/>
<FrameLayout>

另外,如果您希望编辑文本像标题一样工作,您可以使用: https ://stackoverflow.com/a/26573338/2127203

于 2014-10-29T06:10:36.607 回答
1

此 TextView 是否与 RecyclerView 中的项目相关,以便您将其视为项目?如果是这样,请将 EditText 作为新的视图类型添加到您的适配器(到索引 0)并调用notifyItemInserted(0)。作为响应,RecyclerView 将调用 onBind,您可以在其中返回您的 EditText。这样,RecyclerView 可以在 EditText 中淡入淡出时很好地动画视图。如果您可以发布您的适配器,我很乐意发布一个示例 comde。

如果您不想在 RecyclerView 中添加它,您有两个选择: - 在 RecyclerView 上设置上边距或在添加编辑文本时设置上边距。- 使用线性布局而不是框架布局并使用TransitionManager进行动画处理。

我仍然认为您应该考虑将其作为一个项目添加到您的适配器中,以便 LayoutManager 可以处理焦点更改等(并且它也会与列表的其余部分一起移动)

于 2014-10-29T04:27:20.763 回答
0

这对我有用

<RelativeLayout>    
        <LinearLayout>
            <!-- A RecyclerView with some commonly used attributes -->
            <android.support.v7.widget.RecyclerView
                android:id="@+id/my_recycler_view"
                android:scrollbars="vertical"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:elevation="24dp"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"/>
        </LinearLayout>    
    <Button />    
</RelativeLayout>
于 2015-03-25T18:12:52.613 回答
0

这是因为在 Frame Layout 中,每个视图一个接一个地堆叠... FrameLayout 旨在阻止屏幕中的一个区域。您可以将许多视图或 ViewGroups 添加到 frameLayout 。所有视图都将堆叠在一起......

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fab="http://schemas.android.com/apk/res-auto"
    android:id="@+id/fragment_my_frame_layout"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
      />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/my_recycler_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scrollbars="vertical" />

    <com.melnykov.fab.FloatingActionButton
        "@+id/button_floating_action"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:layout_margin="16dp"
        android:src="@drawable/ic_action_new"
        fab:fab_colorNormal="@color/primary_dark"
        fab:fab_colorPressed="@color/primary" />

    </LinearLayout>
</FrameLayout>

然后当你想膨胀一个 EditText 时,把它膨胀到线性布局而不是框架布局

于 2017-06-09T19:42:31.360 回答