gpt4 book ai didi

android - Coordinatorlayout adjustResize 打开键盘时不折叠工具栏

转载 作者:行者123 更新时间:2023-11-29 14:17:59 26 4
gpt4 key购买 nike

我的 android 应用程序中有以下布局,但 Activity 中的 windowSoftInputMode="adjustResize" 有问题。该布局在屏幕底部包含一个下一步按钮。打开键盘时,按钮会覆盖输入字段而不是折叠工具栏。

Current situation

我试过了

备注:

有趣的是,当我在第一个 EditText 字段中输入内容时,当文本超过默认宽度时,它才会调整工具栏的大小并将其折叠。

<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:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/save_button">

<include layout="@layout/layout_toolbar" />

<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior">

<TextView
android:id="@+id/report_input_name_hint"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:fontFamily="@font/customfont"
android:text="@string/report_phonenumber_name_hint"
android:textColor="@color/light_grey"
android:visibility="invisible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<EditText
android:id="@+id/report_input_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:background="@android:color/transparent"
android:fontFamily="@font/customfont"
android:hint="@string/report_phonenumber_name_hint"
android:inputType="textPersonName"
android:maxLength="120"
android:textColorHint="@color/text_color_hint"
android:textSize="@dimen/text_18sp"
app:layout_constraintEnd_toStartOf="@+id/clear_text_button_name"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/report_input_name_hint" />

<ImageView
android:id="@+id/clear_text_button_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:contentDescription="@string/accessibility_image_description_clear_text_button"
android:padding="@dimen/linespace_10dp"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@+id/report_input_name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/report_input_name"
app:srcCompat="@drawable/icn_pro_cross" />

<View
android:id="@+id/textview_underline_name"
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_marginEnd="8dp"
android:layout_marginTop="8dp"
android:background="@color/light_grey"
app:layout_constraintEnd_toEndOf="@+id/clear_text_button_name"
app:layout_constraintStart_toStartOf="@+id/report_input_name"
app:layout_constraintTop_toBottomOf="@+id/report_input_name" />

<android.support.constraint.Barrier
android:id="@+id/barrier2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="bottom"
app:constraint_referenced_ids="report_input_name,textview_underline_name,clear_text_button_name,report_input_name_hint"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textview_underline_name" />

<TextView
android:id="@+id/report_input_number_hint"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:fontFamily="@font/customfont"
android:text="@string/telefoonnummer"
android:textColor="@color/light_grey"
android:visibility="invisible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/barrier2" />

<ImageView
android:id="@+id/country_flag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:adjustViewBounds="false"
android:contentDescription="@string/accessibility_image_description_country_flag"
android:padding="@dimen/linespace_10dp"
android:src="@drawable/flag_netherlands"
app:layout_constraintBottom_toBottomOf="@+id/report_input_number"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/report_input_number" />

<ImageView
android:id="@+id/dropdown_arrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:rotation="90"
android:src="@drawable/dropdown_arrow"
app:layout_constraintBottom_toBottomOf="@+id/country_flag"
app:layout_constraintStart_toEndOf="@+id/country_flag"
app:layout_constraintTop_toTopOf="@+id/country_flag"
tools:ignore="ContentDescription" />

<TextView
android:id="@+id/country_code"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:fontFamily="@font/customfont"
android:text="@string/report_phone_dutch_country_code"
android:textColor="@color/dark_text"
android:textSize="@dimen/text_18sp"
app:layout_constraintBottom_toBottomOf="@+id/report_input_number"
app:layout_constraintStart_toEndOf="@+id/dropdown_arrow"
app:layout_constraintTop_toTopOf="@+id/report_input_number" />

<EditText
android:id="@+id/report_input_number"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@android:color/transparent"
android:focusable="true"
android:fontFamily="@font/customfont"
android:hint="@string/report_phone_text_hint"
android:inputType="number"
android:maxLength="13"
android:textColorHint="@color/text_color_hint"
android:textSize="@dimen/text_18sp"
app:layout_constraintEnd_toStartOf="@+id/clear_text_button"
app:layout_constraintStart_toEndOf="@+id/country_code"
app:layout_constraintTop_toBottomOf="@+id/report_input_number_hint" />

<ImageView
android:id="@+id/clear_text_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:contentDescription="@string/accessibility_image_description_clear_text_button"
android:padding="@dimen/linespace_10dp"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@+id/report_input_number"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/report_input_number"
app:srcCompat="@drawable/icn_pro_cross" />

<View
android:id="@+id/textview_underline_number"
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_marginEnd="8dp"
android:layout_marginTop="8dp"
android:background="@color/light_grey"
app:layout_constraintEnd_toEndOf="@+id/clear_text_button"
app:layout_constraintStart_toStartOf="@+id/country_flag"
app:layout_constraintTop_toBottomOf="@+id/report_input_number" />


<TextView
android:id="@+id/error_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginTop="8dp"
android:paddingBottom="@dimen/activity_vertical_margin"
android:textColor="@color/emergency_button_color"
app:layout_constraintEnd_toEndOf="@+id/textview_underline_number"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/textview_underline_number"
app:layout_constraintTop_toBottomOf="@+id/textview_underline_number" />

</android.support.constraint.ConstraintLayout>

</android.support.design.widget.CoordinatorLayout>

<Button
android:id="@+id/save_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_margin="@dimen/activity_horizontal_margin"
android:background="@drawable/report_next_button_background"
android:enabled="false"
android:text="@string/melden_input_volgende"
android:textAllCaps="false"
android:textColor="@color/inactive_text"
android:textSize="@dimen/text_16sp"
android:textStyle="bold" />

当没有足够空间显示扩展工具栏下的输入字段 + 按钮时,小型设备上的预期结果:

desired result

最佳答案

目前我有一个非常老套的解决方案,远非最佳。如果有人有更好的解决方案,我会很高兴听到。我发现工具栏不会折叠,因为聚焦的 View 已经可见。所以现在我以编程方式将焦点切换到最后一项并返回到第一项以折叠工具栏。

    report_input_number.requestFocus()

Handler().postDelayed( {
report_input_name.requestFocus()
}, 350)

我正在使用以下布局:

<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:gravity="center|bottom"
android:orientation="vertical">

<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">

<include layout="@layout/layout_toolbar" />

<android.support.v4.widget.NestedScrollView
android:id="@+id/nested_scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">

<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="16dp">

<TextView
android:id="@+id/report_input_name_hint"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:text="@string/report_phonenumber_name_hint"
android:textColor="@color/light_grey"
android:visibility="invisible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<EditText
android:id="@+id/report_input_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:background="@android:color/transparent"
android:hint="@string/report_phonenumber_name_hint"
android:inputType="textPersonName"
android:maxLength="120"
android:textColorHint="@color/text_color_hint"
android:textSize="@dimen/text_18sp"
app:layout_constraintEnd_toStartOf="@+id/clear_text_button_name"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/report_input_name_hint" />

<ImageView
android:id="@+id/clear_text_button_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:contentDescription="@string/accessibility_image_description_clear_text_button"
android:padding="@dimen/linespace_10dp"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@+id/report_input_name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/report_input_name"
app:srcCompat="@drawable/icn_pro_cross" />

<View
android:id="@+id/textview_underline_name"
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_marginEnd="8dp"
android:layout_marginTop="8dp"
android:background="@color/light_grey"
app:layout_constraintEnd_toEndOf="@+id/clear_text_button_name"
app:layout_constraintStart_toStartOf="@+id/report_input_name"
app:layout_constraintTop_toBottomOf="@+id/report_input_name" />

<TextView
android:id="@+id/report_input_number_hint"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="@string/telefoonnummer"
android:textColor="@color/light_grey"
android:visibility="invisible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textview_underline_name" />

<ImageView
android:id="@+id/country_flag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:adjustViewBounds="false"
android:contentDescription="@string/accessibility_image_description_country_flag"
android:padding="@dimen/linespace_10dp"
android:src="@drawable/flag_netherlands"
app:layout_constraintBottom_toBottomOf="@+id/report_input_number"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/report_input_number" />

<ImageView
android:id="@+id/dropdown_arrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:rotation="90"
android:src="@drawable/dropdown_arrow"
app:layout_constraintBottom_toBottomOf="@+id/country_flag"
app:layout_constraintStart_toEndOf="@+id/country_flag"
app:layout_constraintTop_toTopOf="@+id/country_flag"
tools:ignore="ContentDescription" />

<TextView
android:id="@+id/country_code"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:text="@string/report_phone_dutch_country_code"
android:textColor="@color/dark_text"
android:textSize="@dimen/text_18sp"
app:layout_constraintBottom_toBottomOf="@+id/report_input_number"
app:layout_constraintStart_toEndOf="@+id/dropdown_arrow"
app:layout_constraintTop_toTopOf="@+id/report_input_number" />

<EditText
android:id="@+id/report_input_number"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@android:color/transparent"
android:focusable="true"
android:hint="@string/report_phone_text_hint"
android:inputType="number"
android:maxLength="13"
android:textColorHint="@color/text_color_hint"
android:textSize="@dimen/text_18sp"
app:layout_constraintEnd_toStartOf="@+id/clear_text_button"
app:layout_constraintStart_toEndOf="@+id/country_code"
app:layout_constraintTop_toBottomOf="@+id/report_input_number_hint" />

<ImageView
android:id="@+id/clear_text_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:contentDescription="@string/accessibility_image_description_clear_text_button"
android:padding="@dimen/linespace_10dp"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@+id/report_input_number"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/report_input_number"
app:srcCompat="@drawable/icn_pro_cross" />

<View
android:id="@+id/textview_underline_number"
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_marginEnd="8dp"
android:layout_marginTop="8dp"
android:background="@color/light_grey"
app:layout_constraintEnd_toEndOf="@+id/clear_text_button"
app:layout_constraintStart_toStartOf="@+id/country_flag"
app:layout_constraintTop_toBottomOf="@+id/report_input_number" />


<TextView
android:id="@+id/error_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginTop="8dp"
android:paddingBottom="@dimen/activity_vertical_margin"
android:textColor="@color/emergency_button_color"
app:layout_constraintEnd_toEndOf="@+id/textview_underline_number"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/textview_underline_number"
app:layout_constraintTop_toBottomOf="@+id/textview_underline_number" />

</android.support.constraint.ConstraintLayout>

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

</android.support.design.widget.CoordinatorLayout>

<Button
android:id="@+id/save_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/activity_horizontal_margin"
android:layout_marginEnd="@dimen/activity_horizontal_margin"
android:layout_marginStart="@dimen/activity_horizontal_margin"
android:layout_marginTop="@dimen/activity_horizontal_margin"
android:layout_weight="0"
android:background="@drawable/report_next_button_background"
android:enabled="false"
android:text="@string/melden_input_volgende"
android:textAllCaps="false"
android:textColor="@color/inactive_text"
android:textSize="@dimen/text_16sp"
android:textStyle="bold" />
</LinearLayout>

关于android - Coordinatorlayout adjustResize 打开键盘时不折叠工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50390142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com