Edittext在BottomSheetDialogFragment

时间:2019-04-23 10:53:36

标签: android android-fragments android-edittext keyboard-events bottom-sheet

  

我有一个 BottomSheetDialogFragment ,其中有简单的布局文件   当用户使用时,edittext在底部,recyclerview在顶部   点击edittext并打开软键盘,并在其中写几行   edittext并尝试滚动它,如果在滚动过程中我点击任意一行   edittext会挤压自身,还会挤压 BottomSheetDialogFragment 混蛋   就像是在渲染自己。

这是我的代码

布局文件:

<RelativeLayout
    android:id="@+id/layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/background"
    android:orientation="vertical"
    app:behavior_hideable="true"
    app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

        <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/swipeRefreshLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@+id/etPostShare">

            <android.support.v7.widget.RecyclerView
                android:id="@+id/rvNewMessage"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>

            </android.support.v4.widget.SwipeRefreshLayout>

            <EditText
                android:id="@+id/etPostShare"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="1dp"
                android:background="@null"
                android:gravity="center|left"
                android:hint="Aa"
                android:inputType="textCapSentences|textMultiLine"
                android:isScrollContainer="true"
                android:maxHeight="60dp"
                android:maxLength="@integer/send_chat_txt_limit"
                android:maxLines="4"
                android:paddingLeft="18.4dp"
                android:paddingBottom="10dp"
                android:textSize="14.6sp" />

</RelativeLayout>

我在此附上了本期的图片和视频链接:

enter image description here

https://drive.google.com/file/d/1bADuzDQoWep8XPMQ4ypKCWJyD32Gtfwp/view?usp=sharing

2 个答案:

答案 0 :(得分:0)

此功能可以预览

 <RelativeLayout
            android:id="@+id/layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/holo_red_light"
            android:orientation="vertical"
            app:behavior_hideable="true"
            app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

            <android.support.v4.widget.SwipeRefreshLayout
                android:id="@+id/swipeRefreshLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <android.support.v7.widget.RecyclerView
                    android:id="@+id/rvNewMessage"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"/>

            </android.support.v4.widget.SwipeRefreshLayout>

            <EditText
                android:id="@+id/etPostShare"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="1dp"
                android:background="@null"
                android:gravity="center|left"
                android:layout_alignParentBottom="true"
                android:hint="Aa\naa"
                android:inputType="textCapSentences|textMultiLine"
                android:isScrollContainer="true"
                android:maxHeight="60dp"
                android:maxLength="500"
                android:maxLines="4"
                android:paddingLeft="18.4dp"
                android:paddingBottom="10dp"
                android:textSize="14.6sp" />

        </RelativeLayout>

答案 1 :(得分:0)

我有完全相同的问题。希望它能工作:)

style.xml

<style name="DialogStyle" parent="Theme.Design.Light.BottomSheetDialog">
    <item name="android:windowIsFloating">false</item> 
    <item name="android:windowSoftInputMode">adjustResize</item>
</style>

在您的BottomSheetDialogFragment

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setStyle(DialogFragment.STYLE_NORMAL, R.style.DialogStyle)
}

在您的布局中

<androidx.core.widget.NestedScrollView
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:gravity="bottom"
   android:orientation="vertical">

           .... your content with EditText



  </androidx.core.widget.NestedScrollView>