当前位置: 首页 > 知识库问答 >
问题:

Android:点击编辑文本,调整软键盘上方的按钮

笪波鸿
2023-03-14

我正在尝试调整图像按钮正下方的软键盘,但它覆盖了图像按钮,使其无法单击。当用户单击编辑文本时,我希望按钮位于软键盘的正上方。我尝试过使用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:id="@+id/addnote"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/my_toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:elevation="4dp"
        android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        app:titleTextColor="@color/white" />

    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/addnote_title"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginBottom="10dp"
        android:hint="Title">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/addnote_title_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            tools:layout_editor_absoluteX="23dp"
            tools:layout_editor_absoluteY="28dp" />

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

    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/addnote_descp"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginBottom="10dp"
        android:hint="Notes">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/addnote_descp_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="top"
            android:lines="10"
            tools:layout_editor_absoluteX="23dp"
            tools:layout_editor_absoluteY="28dp" />

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="2dp">

        <ImageButton
            android:id="@+id/check_btn"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:background="@color/black"
            android:layout_marginRight="2dp"
            android:src="@drawable/checkbox"/>

        <ImageButton
            android:id="@+id/bold_btn"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:background="@color/black"
            android:layout_marginLeft="2dp"
            android:src="@drawable/format_bold"/>


    </LinearLayout>
</LinearLayout>

在AndroidManifest中。我拥有的xml文件

<activity
    android:name=".AddNote"
    android:exported="true"
    android:windowSoftInputMode="adjustResize"/>

共有1个答案

漆雕稳
2023-03-14

试试这段代码,这将显示键盘上方的按钮。当我们确实想在键盘上方显示任何视图时,该视图应与底部对齐。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:id="@+id/addnote"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<androidx.appcompat.widget.Toolbar
    android:id="@+id/my_toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:elevation="4dp"
    android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:titleTextColor="@color/white" />

<ScrollView
    android:layout_width="match_parent"
    android:layout_below="@id/my_toolbar"
    android:layout_marginBottom="20dp"
    android:layout_above="@id/bottom_layout"
    android:layout_height="match_parent">
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">


        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/addnote_title"
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="10dp"
            android:hint="Title">

            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/addnote_title_text"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                tools:layout_editor_absoluteX="23dp"
                tools:layout_editor_absoluteY="28dp" />

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

        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/addnote_descp"
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="10dp"
            android:hint="Notes">

            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/addnote_descp_text"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="top"
                android:lines="10"
                tools:layout_editor_absoluteX="23dp"
                tools:layout_editor_absoluteY="28dp" />

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

    </LinearLayout>
    
</ScrollView>

<LinearLayout
    android:id="@+id/bottom_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_alignParentBottom="true"
    android:padding="2dp">

    <ImageButton
        android:id="@+id/check_btn"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:background="@color/black"
        android:layout_marginRight="2dp"/>

    <ImageButton
        android:id="@+id/bold_btn"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:background="@color/black"
        android:layout_marginLeft="2dp"/>


</LinearLayout>
 类似资料:
  • 我有一个片段,其中包含一个ViewPager2的2个fragemnt。在第二个子片段中,我有一个回收器视图,其视图保持器包含 TextView 和 EditText。 在模拟器中,当我点击编辑视图时,软键盘一直关闭。 在真实设备(索尼xperia XA)中,软键盘没有关闭,但它总是关注第一个编辑文本,无论我是否在另一个编辑文本中单击 我曾尝试使用android:WindowsOfInputMode

  • 我有一个编辑文本,我想自己处理输入,所以我不想在我点击它时(或者当选择改变、焦点改变、长时间点击等)软键盘出现。但是,我仍然希望能够选择文本、更改光标位置、复制/过去等。 我曾尝试将Android系统:windowSoftInputMode=“stateAllwayshidden”放入清单中,但似乎效果不大。我还尝试添加以下内容 这会禁用键盘,但也会阻止光标工作。 目前,我基本上是在尝试为键盘可能

  • 我在做计算器。所以我制作了自己的带有数字和函数的

  • 问题内容: 我有一个“保存”按钮,我想与软键盘一起向上推。因此,当用户单击我的布局中的EditText时,按钮必须保持在键盘上方。现在,该按钮将隐藏在键盘下方。你怎么做到这一点? 提前致谢! 问题答案: 您需要将键盘的输入模式设置为。您可以这样做,将以下行添加到清单中您的活动属性中: 这是在活动中添加的属性的示例:

  • 我有一个布局,其中包含RelativeLayout作为根布局,相对布局在顶部包含ListView,在相对布局的底部包含一个Edittext align。在Lollipop前版本的设备中,每当软键盘打开Edittext时,我就可以看到Edittext。但在Lollipop软键盘中隐藏了编辑文本。我已经在清单文件中设置了android:WindowsOfInputMode=“adjustPan|adj

  • 当软键盘弹出时,我需要在键盘和编辑文本之间提供一些填充,这通常会隐藏编辑文本的底部。 打开软键盘时,我需要完整的edittext视图可见。更重要的是,我不能使用<code>android:WindowsOfInputMode=“adjustResize”,这在我的用例中效果不佳。我正在使用“adjustPan”。 那么如何在不改变windowSoftInputMode的情况下实现相同呢?