如何使textview(位于编辑文本下)与键盘显示一起向上推

时间:2019-01-27 07:21:26

标签: android

我有下面的布局

<?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:layout_height="match_parent"
    android:background="@color/DarkGray"
    android:orientation="vertical">


        <EditText
            android:id="@+id/etCaption"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginBottom="8dp"
            android:layout_weight="1"           
            android:gravity="start|top" />

        <TextView
            android:id="@+id/tvCounter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_gravity="right" />


</LinearLayout>

本质上,“编辑”文本位于底部的屏幕和文本视图中。

当我单击“编辑文本”时,将显示键盘,它覆盖了底部的文本视图。

如何确保将文本视图向上推,以便用户在输入编辑文本时可以看到它。

我最初将其作为约束布局,但将其更改为linrear布局,但仍然无法正常工作

谢谢

3 个答案:

答案 0 :(得分:0)

带有layout_height="match_parent"的节点将不会被推向任何方向,因为布局没有可移动的空间。这应该是layout_height="wrap_content"(“显示布局边界”)。 在android:windowSoftInputMode="adjustResize"的{​​{1}}中将"adjustPan|adjustResize"activity添加到Manifest.xml时,应该在键盘显示和消失时调整布局的大小。

  

活动的主窗口始终会调整大小,以便为屏幕上的软键盘腾出空间。

,并且这种(或相当相似的)效果由材料TextInputLayout提供:

anatomy of a TextInputLayout

api "com.google.android.material:material:1.0.0"

例如(注意app:counterEnabledapp:counterMaxLength属性):

<com.google.android.material.textfield.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/caption"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="start"
        android:hint="@string/hint_caption"
        android:inputType="textNoSuggestions"
        android:text="@={item.caption}"

        app:counterEnabled="true"
        app:counterMaxLength="50"/>

</com.google.android.material.textfield.TextInputLayout>

答案 1 :(得分:0)

您需要将此声明发送到manifest.xml

android:windowSoftInputMode="stateVisible|adjustResize"

确保在活动textview中声明了它。

答案 2 :(得分:0)

要在键盘处于打开状态时调整布局

尝试以下代码:  清单

<activity android:name=".MainActivity"
        android:windowSoftInputMode="adjustResize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

您要在其中调整键盘的活动中添加此行

android:windowSoftInputMode="adjustResize"

查看屏幕截图:

enter image description here

我希望它对您有用