作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嘿,我目前正在尝试使用以下布局创建一个 BottomSheetDialogFragment:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:fitsSystemWindows="true"
android:layout_alignParentBottom="true">
<com.indico.recorder.views.DonkeyConstraintLayout
android:id="@+id/album_edit_info_container"
android:layout_width="match_parent"
android:backgroundTint="@color/colorBackgroundTinted"
android:layout_height="wrap_content"
android:clipChildren="true"
android:clipToPadding="true">
<View
android:id="@+id/album_edit_draggable_indicator"
android:layout_width="40dp"
android:layout_height="4dp"
android:alpha="0.65"
android:background="@drawable/draggable_indicator"
app:layout_constraintBottom_toTopOf="@id/album_edit_title_container"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:elevation="1dp"/>
<android.support.design.widget.TextInputLayout
android:id="@+id/album_edit_title_container"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
app:layout_constraintTop_toBottomOf="@id/album_edit_draggable_indicator"
app:layout_constraintBottom_toTopOf="@id/album_edit_description_container"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<com.indico.recorder.views.AutoClearEditText
android:id="@+id/album_edit_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:maxLength="@integer/media_title_max_length"
android:hint="@string/session_name_hint"
android:imeOptions="actionNext"/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/album_edit_description_container"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
app:layout_constraintBottom_toTopOf="@id/albumEditDivider"
app:layout_constraintTop_toBottomOf="@id/album_edit_title_container"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<android.support.design.widget.TextInputEditText
android:id="@+id/album_edit_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="75dp"
android:textAlignment="textStart"
android:inputType="textMultiLine|textAutoCorrect|textCapSentences"
android:maxLines="@integer/media_description_max_length"
android:hint="@string/session_description_hint"
android:gravity="start|top"
android:visibility="visible"/>
</android.support.design.widget.TextInputLayout>
<View
android:id="@+id/albumEditDivider"
android:layout_width="match_parent"
android:layout_height="0.2dp"
android:alpha="0.75"
android:background="@drawable/divider_horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/album_edit_description_container"
app:layout_constraintStart_toStartOf="parent"/>
</com.indico.recorder.views.DonkeyConstraintLayout>
<android.support.constraint.ConstraintLayout
android:id="@+id/album_edit_activate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:padding="16dp"
android:background="@drawable/capture_selection_item_background">
<ImageView
android:id="@+id/album_edit_activate_icon"
android:layout_width="32dp"
android:layout_height="32dp"
android:src="@drawable/ic_check_white_24dp"
android:layout_gravity="center"
android:tint="@color/colorPrimary"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
<TextView
android:id="@+id/album_edit_activate_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:layout_marginStart="16dp"
android:text="@string/album_edit_activate"
android:layout_centerInParent="true"
android:textColor="@color/colorOnSurface"
android:textSize="20sp"
app:layout_constraintStart_toEndOf="@id/album_edit_activate_icon"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
</android.support.constraint.ConstraintLayout>
</LinearLayout>
fitSystemWindows
一起工作的大量研究和其他窗口属性导致我所有的 Bottom Sheet 都采用以下样式:
<style name="BottomSheet.Theme" parent="Theme.Design.Light.BottomSheetDialog">
<item name="bottomSheetStyle">@style/BottomSheet.Style</item>
<item name="windowNoTitle">true</item>
<item name="android:label">@null</item>
<item name="android:fitsSystemWindows">true</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowSoftInputMode">adjustPan|stateVisible</item>
<item name="android:windowClipToOutline">true</item>
</style>
<style name="BottomSheet.Style" parent="Widget.Design.BottomSheet.Modal">
<item name="behavior_peekHeight">300dp</item>
<item name="android:background">@drawable/squared_card_background</item>
<item name="behavior_hideable">true</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowSoftInputMode">adjustPan|stateVisible</item>
</style>
windowSoftInputMode
在 list 中,因为应用程序的其余部分需要默认行为。
class AlbumCreateSheet: BottomSheetDialogFragment(), View.OnClickListener {
companion object {
private val tag = AlbumCreateSheet::class.java.simpleName
fun show(fragmentManager: FragmentManager) {
return AlbumCreateSheet().show(fragmentManager, tag)
}
}
private lateinit var titleView: EditText
private lateinit var descriptionView: EditText
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
dialog.window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
return inflater.inflate(R.layout.sheet_album_create, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
titleView = view.findViewById(R.id.album_create_title)
descriptionView = view.findViewById(R.id.album_create_description)
view.findViewById<View>(R.id.album_create_create).setOnClickListener(this)
}
override fun onClick(v: View?) {
when(v?.id) {
R.id.album_create_create -> {
useDefaultRealm {
executeTransaction {
val session = Session(name = titleView.text.toString(),
description = descriptionView.text.toString())
it.insertOrUpdate(session)
}
}
dismiss()
}
}
}
}
最佳答案
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val dialog = super.onCreateDialog(savedInstanceState)
dialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
dialog.setOnShowListener {
Handler().post {
val bottomSheet = (dialog as? BottomSheetDialog)?.findViewById<View>(R.id.design_bottom_sheet) as? FrameLayout
bottomSheet?.let {
BottomSheetBehavior.from(it).state = BottomSheetBehavior.STATE_EXPANDED
}
}
}
return dialog
关于android - BottomSheetDialogFragment AdjustResize SoftInput 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54326181/
设置 WindowSoftInputMode 后,我们在 Android 中遇到问题至Android.Views.SoftInput.AdjustResize .当键盘显示或隐藏时,我们的启动屏幕会在
嘿,我目前正在尝试使用以下布局创建一个 BottomSheetDialogFragment:
有没有办法在 Android 2.3 上显示多行 EditText 并使用 IME 操作标签“完成”? 在 Android 2.2 中这不是问题,输入按钮显示 IME 操作标签“完成”(android
我有一个使用 NativeActivity 的 OpenGL 应用程序。当我询问用户的姓名时,我通过 JNI 调用一个 java 方法为我打开一个软件键盘。游戏在 OpenGL 上下文中显示了自己的
我是一名优秀的程序员,十分优秀!