将整个对话框推到键盘上方,键盘盖按钮

时间:2019-04-05 09:04:06

标签: android android-layout android-custom-view android-softkeyboard android-dialog

我有自定义对话框,该对话框附在屏幕底部。 当我将焦点移到edittext时,键盘会打开,但会聚焦到edittext,因此会覆盖我的按钮。我想看按钮。如果我在活动中使用相同的xml,则其行为正确

I want to see this continue button when keyboard opens

But it hides the button

我尝试了所有的windowSoftInputMode,但是没有用, 我还把整个视图都放在了滚动视图中,这也没用。

我的对话框XML ,(我相信问题在这里)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:app="http://schemas.android.com/apk/res-auto"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:focusableInTouchMode="true"
              android:fitsSystemWindows="true"
              android:clickable="true"
              android:layout_height="wrap_content" android:id="@+id/linearLayout" android:focusable="true">

    <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:background="@color/hard_white"
            android:layout_height="wrap_content"

            android:focusable="true"
            android:focusableInTouchMode="true"
            android:animateLayoutChanges="true">


        <Button
                android:layout_width="0dp"
                android:layout_height="48dp"
                android:textSize="16sp"
                android:textColor="@color/hard_white"
                android:lineSpacingExtra="10sp"
                android:gravity="center"
                android:text="@string/continuee"
                android:textAllCaps="false"
                android:background="@drawable/radius_background_lipstick"
                android:id="@+id/btn_login"
                android:enabled="true"
                app:fontFamily="@font/akkuratprobold"
                app:layout_constraintBottom_toBottomOf="parent"
                android:layout_marginBottom="8dp" android:layout_marginEnd="8dp"
                app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="8dp"
                android:layout_marginStart="8dp" app:layout_constraintStart_toStartOf="parent"
                android:layout_marginLeft="8dp"/>


        <View android:layout_width="0dp" android:layout_height="1dp"
              android:background="@color/greyish"
              android:alpha="0.5"
              app:layout_constraintBottom_toTopOf="@+id/constraintLayout7" app:layout_constraintEnd_toEndOf="parent"
              android:layout_marginEnd="16dp" android:layout_marginRight="16dp"
              app:layout_constraintStart_toStartOf="parent"
              android:layout_marginLeft="16dp" android:layout_marginStart="16dp" android:id="@+id/view"
              android:layout_marginBottom="8dp" app:layout_constraintHorizontal_bias="0.0"/>

        <View android:layout_width="0dp" android:layout_height="1dp"
              android:background="@color/greyish"
              android:layout_marginBottom="24dp"
              android:alpha="0.5"
              app:layout_constraintBottom_toTopOf="@+id/textView20" app:layout_constraintEnd_toEndOf="parent"
              android:layout_marginEnd="16dp" android:layout_marginRight="16dp"
              app:layout_constraintStart_toStartOf="parent"
              android:layout_marginLeft="16dp" android:layout_marginStart="16dp" android:id="@+id/view2"
              app:layout_constraintHorizontal_bias="0.0"/>
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="16sp"
                android:textColor="#2d2d2d"
                android:lineSpacingExtra="10sp"
                app:fontFamily="@font/akkuratprobold"
                android:text="Order type" android:layout_marginBottom="24dp"
                app:layout_constraintBottom_toTopOf="@+id/constraintLayout5"
                android:layout_marginStart="16dp" app:layout_constraintStart_toStartOf="parent"
                android:layout_marginLeft="16dp" android:id="@+id/textView20"/>

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="13sp"
                android:textColor="#747474"
                android:gravity="center_horizontal"
                android:visibility="gone"
                app:fontFamily="@font/akkuratproregular"
                android:text="Order type"
                android:id="@+id/textView24"
                android:layout_marginStart="16dp"
                app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="16dp"
                app:layout_constraintTop_toBottomOf="@+id/view2" android:layout_marginTop="16dp"/>
        <androidx.constraintlayout.widget.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="100dp"
                tools:layout_editor_absoluteX="0dp"
                android:id="@+id/constraintLayout5"
                android:visibility="gone"
                app:layout_constraintBottom_toTopOf="@id/view">

            <ImageView
                    android:layout_width="15dp"
                    android:layout_height="15dp" app:srcCompat="@drawable/ic_tick"
                    android:id="@+id/imageView13" app:layout_constraintEnd_toEndOf="parent"
                    android:layout_marginEnd="24dp" android:layout_marginRight="24dp"
                    app:layout_constraintTop_toTopOf="@+id/textView23"
                    app:layout_constraintBottom_toBottomOf="@+id/textView23"/>

            <TextView
                    android:layout_width="0dp"
                    android:layout_height="40dp"
                    android:gravity="center|left"
                    android:textSize="16sp"
                    android:textColor="#2d2d2d"
                    android:lineSpacingExtra="10sp"
                    app:fontFamily="@font/akkuratprobold"
                    android:text="Cash"
                    android:id="@+id/textView23"
                    android:layout_marginEnd="16dp"
                    app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="16dp"
                    android:layout_marginStart="16dp" app:layout_constraintStart_toStartOf="parent"
                    android:layout_marginLeft="16dp" app:layout_constraintHorizontal_bias="0.0"
                    android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="parent"/>
            <TextView
                    android:layout_width="0dp"
                    android:layout_height="40dp"
                    android:gravity="center|left"
                    android:textSize="16sp"
                    android:textColor="#2d2d2d"
                    android:lineSpacingExtra="10sp"
                    app:fontFamily="@font/akkuratprobold"
                    android:text="Principal"
                    android:id="@+id/textView27"
                    android:layout_marginEnd="16dp"
                    app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="16dp"
                    android:layout_marginStart="16dp" app:layout_constraintStart_toStartOf="parent"
                    android:layout_marginLeft="16dp" app:layout_constraintHorizontal_bias="0.0"
                    android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@+id/textView23"/>

        </androidx.constraintlayout.widget.ConstraintLayout>

        <androidx.constraintlayout.widget.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:animateLayoutChanges="true"
                app:layout_constraintBottom_toTopOf="@+id/btn_login"
                tools:layout_editor_absoluteX="0dp"
                android:layout_marginBottom="32dp"
                android:id="@+id/constraintLayout7">

            <androidx.constraintlayout.widget.ConstraintLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:visibility="gone"
                    tools:layout_editor_absoluteX="0dp"
                    android:id="@+id/layout_principal" android:layout_marginBottom="8dp"
                    app:layout_constraintBottom_toBottomOf="parent" android:layout_marginTop="8dp"
                    app:layout_constraintTop_toTopOf="parent">


                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="13sp"
                        android:textColor="#747474"
                        android:gravity="center_horizontal"
                        app:fontFamily="@font/akkuratproregular"
                        android:text="Price per $100" android:id="@+id/textView28"
                        android:layout_marginTop="24dp"
                        app:layout_constraintTop_toBottomOf="@+id/textView29" android:layout_marginStart="16dp"
                        app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="16dp"/>
                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="13sp"
                        android:textColor="#747474"
                        android:gravity="center_horizontal"
                        app:fontFamily="@font/akkuratproregular"
                        android:text="Accured interest" android:id="@+id/textView32"
                        android:layout_marginTop="8dp"
                        app:layout_constraintTop_toBottomOf="@+id/textView28" android:layout_marginStart="16dp"
                        app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="16dp"/>
                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="13sp"
                        android:textColor="#747474"
                        android:gravity="center_horizontal"
                        app:fontFamily="@font/akkuratproregular"
                        android:text="Payment" android:id="@+id/textView33"
                        app:layout_constraintTop_toBottomOf="@+id/vieww" android:layout_marginTop="20dp"
                        android:layout_marginStart="16dp" app:layout_constraintStart_toStartOf="parent"
                        android:layout_marginLeft="16dp"/>
                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="13sp"
                        android:textColor="#747474"
                        android:gravity="center_horizontal"
                        app:fontFamily="@font/akkuratproregular"
                        android:text="$200,4" android:id="@+id/textView30"
                        android:layout_marginTop="24dp"
                        app:layout_constraintTop_toBottomOf="@+id/textView25" android:layout_marginEnd="12dp"
                        app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="12dp"/>
                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="13sp"
                        android:textColor="#747474"
                        android:gravity="center_horizontal"
                        app:fontFamily="@font/akkuratproregular"
                        android:text="$20,4" android:id="@+id/textView31"
                        android:layout_marginTop="8dp"
                        app:layout_constraintTop_toBottomOf="@+id/textView30" android:layout_marginEnd="12dp"
                        app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="12dp"/>
                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="16sp"
                        android:textColor="#2d2d2d"
                        android:lineSpacingExtra="10sp"
                        app:fontFamily="@font/akkuratprobold"
                        android:text="Principal Amouth"
                        android:layout_marginTop="16dp"
                        app:layout_constraintTop_toTopOf="parent" android:layout_marginStart="16dp"
                        app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="16dp"
                        android:id="@+id/textView29"/>
                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="16sp"
                        android:textColor="#2d2d2d"
                        android:lineSpacingExtra="10sp"
                        app:fontFamily="@font/akkuratprobold"
                        android:text="Payment Method"
                        android:layout_marginStart="16dp"
                        app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="16dp"
                        android:id="@+id/textView34" app:layout_constraintTop_toBottomOf="@+id/textView33"
                        android:layout_marginTop="16dp"/>
                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="16sp"
                        android:textColor="#2d2d2d"
                        android:lineSpacingExtra="10sp"
                        app:fontFamily="@font/akkuratprobold"
                        android:text="Cash"
                        android:id="@+id/textView35"
                        android:layout_marginTop="16dp"
                        app:layout_constraintTop_toBottomOf="@+id/textView36" android:layout_marginEnd="16dp"
                        app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="16dp"/>
                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="16sp"
                        android:textColor="#2d2d2d"
                        android:lineSpacingExtra="10sp"
                        app:fontFamily="@font/akkuratprobold"
                        android:text="$1000"
                        android:id="@+id/textView25"
                        android:layout_marginEnd="16dp"
                        app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="16dp"
                        android:layout_marginTop="16dp" app:layout_constraintTop_toTopOf="parent"/>


                <View android:layout_width="0dp" android:layout_height="1dp"
                      android:background="@color/greyish"
                      android:alpha="0.5" app:layout_constraintEnd_toEndOf="parent"
                      android:layout_marginEnd="16dp" android:layout_marginRight="16dp"
                      app:layout_constraintStart_toStartOf="parent"
                      android:layout_marginLeft="16dp" android:layout_marginStart="16dp" android:id="@+id/vieww"
                      app:layout_constraintHorizontal_bias="0.0" app:layout_constraintTop_toBottomOf="@+id/textView32"
                      android:layout_marginTop="12dp"/>

                <TextView

                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="13sp"
                        android:textColor="@color/lipstick"
                        android:lineSpacingExtra="7sp"
                        android:gravity="end"
                        app:fontFamily="@font/akkuratprobold"
                        android:text="Add payment method"
                        android:layout_marginEnd="16dp" app:layout_constraintEnd_toEndOf="parent"
                        android:layout_marginRight="16dp" app:layout_constraintTop_toBottomOf="@+id/vieww"
                        android:layout_marginTop="20dp" android:id="@+id/textView36"/>

            </androidx.constraintlayout.widget.ConstraintLayout>

            <androidx.constraintlayout.widget.ConstraintLayout
                    android:id="@+id/layout_amount"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    tools:layout_editor_absoluteX="0dp"
                    android:visibility="visible">

                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="13sp"
                        android:textColor="#747474"
                        android:text="Pound Sterling"
                        app:fontFamily="@font/akkuratproregular" android:id="@+id/textView17"
                        app:layout_constraintStart_toStartOf="parent"
                        android:layout_marginLeft="16dp" android:layout_marginStart="16dp"
                        android:layout_marginTop="8dp"
                        app:layout_constraintTop_toBottomOf="@+id/textView18"/>


                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="16sp"
                        android:textColor="#2d2d2d"
                        android:lineSpacingExtra="10sp"
                        android:text="Cash amount"
                        app:fontFamily="@font/akkuratprobold"

                        android:id="@+id/textView18"
                        app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="16dp"
                        android:layout_marginStart="16dp" android:layout_marginTop="16dp"
                        app:layout_constraintTop_toBottomOf="@+id/textView19"/>

                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="15dp"
                        android:textSize="13sp"
                        android:textColor="#747474"
                        app:fontFamily="@font/akkuratproregular"
                        android:lineSpacingExtra="7sp"
                        android:text="Amount you’d like to buy"
                        android:id="@+id/textView19" app:layout_constraintStart_toStartOf="parent"
                        android:layout_marginLeft="16dp" android:layout_marginStart="16dp"
                        android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="parent"/>
                <EditText
                        android:layout_width="100dp"
                        android:layout_height="wrap_content"
                        android:inputType="number"
                        android:ems="10"
                        android:gravity="center"
                        android:textSize="30sp"
                        android:background="#70FFFFFF"
                        android:textColor="#2d2d2d"
                        android:textCursorDrawable="@drawable/black_cursor"
                        android:lineSpacingExtra="-4sp"
                        app:fontFamily="@font/akkuratproregular"
                        android:id="@+id/editText2"
                        android:text="100"
                        app:layout_constraintEnd_toEndOf="parent"
                        android:layout_marginTop="8dp"
                        app:layout_constraintTop_toTopOf="@+id/textView18"
                        app:layout_constraintBottom_toBottomOf="@+id/textView17"
                        app:layout_constraintVertical_bias="1.0"
                        app:layout_constraintStart_toEndOf="@+id/textView17"
                        android:layout_marginStart="8dp"
                        android:layout_marginLeft="8dp"
                        app:layout_constraintHorizontal_bias="0.958" android:layout_marginEnd="8dp"
                        android:layout_marginRight="8dp"/>


            </androidx.constraintlayout.widget.ConstraintLayout>


        </androidx.constraintlayout.widget.ConstraintLayout>




        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="13sp"
                android:textColor="#747474"
                android:gravity="center_horizontal"
                app:fontFamily="@font/akkuratproregular"
                android:text="Senior Secured"
                app:layout_constraintBottom_toTopOf="@+id/view2" android:layout_marginBottom="28dp"
                android:layout_marginStart="16dp" app:layout_constraintStart_toStartOf="parent"
                android:layout_marginLeft="16dp" android:id="@+id/textView21"/>

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="16sp"
                android:textColor="#2d2d2d"
                android:lineSpacingExtra="10sp"
                android:text="TalkTalk"
                app:fontFamily="@font/akkuratprobold"
                app:layout_constraintBottom_toTopOf="@+id/textView21" android:layout_marginStart="16dp"
                app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="16dp"
                android:id="@+id/textView22" android:layout_marginTop="29dp" app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintVertical_bias="1.0"/>
        <ImageView
                android:layout_width="40dp"
                android:padding="5dp"
                android:layout_height="40dp"
                app:srcCompat="@drawable/aston_martin_logo"
                android:id="@+id/imageView9"
                android:layout_marginTop="8dp"
                app:layout_constraintTop_toTopOf="@+id/textView22"
                android:background="@drawable/radius_corner_grey"
                app:layout_constraintBottom_toBottomOf="@+id/textView21" app:layout_constraintEnd_toEndOf="parent"
                android:layout_marginEnd="16dp" android:layout_marginRight="16dp"
                app:layout_constraintVertical_bias="1.0"/>
        <ImageView
                android:layout_width="25dp"
                android:layout_height="0dp" app:srcCompat="@drawable/ic_down"
                android:id="@+id/imageView12" app:layout_constraintEnd_toEndOf="parent"
                android:layout_marginEnd="16dp" android:layout_marginRight="16dp"
                app:layout_constraintVertical_bias="0.461"
                android:layout_marginBottom="4dp"
                app:layout_constraintTop_toTopOf="@+id/textView14"
                app:layout_constraintBottom_toBottomOf="@+id/textView14"/>


        <TextView
                android:layout_width="80dp"
                android:layout_height="0dp"
                android:textSize="16sp"
                android:textColor="#2d2d2d"
                android:lineSpacingExtra="10sp"
                android:gravity="center|left"
                app:fontFamily="@font/akkuratprobold"
                android:text="Cash"
                app:layout_constraintBottom_toTopOf="@+id/constraintLayout5"
                android:id="@+id/textView14"
                android:layout_marginEnd="8dp"
                android:layout_marginRight="8dp"
                app:layout_constraintTop_toBottomOf="@+id/view2" app:layout_constraintEnd_toEndOf="parent"/>


    </androidx.constraintlayout.widget.ConstraintLayout>


</LinearLayout>

我的自定义对话框

import android.app.Activity
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import android.widget.RelativeLayout
import androidx.core.content.ContextCompat

import com.transitionseverywhere.TransitionManager
import android.view.animation.AnimationUtils
import android.widget.ScrollView


class BottomDialog(private val activity: Activity){

    interface BottomDialogCallBack{
        fun onDialogDismissed()
    }
    private val scrollBackground = ScrollView(activity)
    private val background = RelativeLayout(activity)
    private lateinit var childView: ViewGroup

    init {
        background.setBackgroundColor(ContextCompat.getColor(activity, R.color.transparent))
        val param = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT)
        scrollBackground.addView(background, param)
        setCancelable(true)
        background.setOnClickListener { dismiss() }
    }
    fun setView(view: ViewGroup):BottomDialog{//WASSAP
        childView = view
        setToBottom(view)
        return this
    }

    private fun setToBottom(view: View){
        val param = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT)
        //param.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, view.id)
        background.gravity = Gravity.BOTTOM
        background.addView(view, param)

    }

    fun setCancelable(value: Boolean): BottomDialog{
        background.isClickable = value
        background.isFocusable = value
        return this
    }

    fun autoTransition() {
        autoTransition(childView)
    }

    private fun autoTransition(view: ViewGroup){
        TransitionManager.beginDelayedTransition(view)
    }

    fun show():BottomDialog{

        activity.window.decorView.findViewById<ViewGroup>(android.R.id.content).addView(background)

        val animation = AnimationUtils.loadAnimation(activity, R.anim.slide_up)
        background.startAnimation(animation)

        return this
    }

    fun dismiss():BottomDialog{
        val animation = AnimationUtils.loadAnimation(activity, R.anim.slide_down)
        background.startAnimation(animation)

        (activity as BottomDialogCallBack).onDialogDismissed()

        activity.window.decorView.findViewById<ViewGroup>(android.R.id.content).removeView(background)



        return this
    }
}

3 个答案:

答案 0 :(得分:0)

尝试一下:

<activity android:windowSoftInputMode="adjustResize">

答案 1 :(得分:0)

将按钮放在布局的末尾,并将此行添加到按钮中

    android:focusableInTouchMode="true" 

答案 2 :(得分:0)

尝试不将对话框附加到屏幕底部,使底部约束位于按钮顶部