gpt4 book ai didi

java - 使用 Wrap Content 作为 LayoutParams 时,Android Studio 对话框按钮超出屏幕

转载 作者:太空狗 更新时间:2023-10-29 13:44:36 24 4
gpt4 key购买 nike

我的布局文件夹中有一个带有自定义布局的对话框,它包装了它的内容。如果我将大文本放入其中一个文本字段,底部的按钮就会消失。文本本身是可滚动的,其他一切都很好。我希望按钮粘在对话框的底部,并且在文本太大时不会消失。 Dialog without TextInput , Dialog with large Text .我不能直接发布图片,因此我只包含了链接。

我已经尝试更改布局,使按钮粘在布局的底部,而不是它们上方的 TextView。设置固定大小并不是真正的选择。

对话框布局的布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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="@drawable/bg_layout_rounded_16">

<EditText
android:id="@+id/dialog_resource_title"
style="@style/myEditTextStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:hint="@string/general_title_hint"
android:inputType="textMultiLine"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<EditText
android:id="@+id/dialog_resource_description"
style="@style/myEditTextStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="8dp"
android:hint="@string/general_description_hint"
android:inputType="textMultiLine"
app:layout_constraintBottom_toTopOf="@+id/dialog_resource_cancel"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/dialog_resource_title" />

<Button
android:id="@+id/dialog_resource_cancel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="4dp"
android:layout_marginBottom="8dp"
android:paddingBottom="8dp"
android:text="@string/general_cancel"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/dialog_resource_middle_line"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent" />

<Button
android:id="@+id/dialog_resource_save"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:text="@string/general_save"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/dialog_resource_middle_line" />

<android.support.constraint.Guideline
android:id="@+id/dialog_resource_middle_line"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />

</android.support.constraint.ConstraintLayout>


Initialisation of the Dialog:



resourceDialog = new Dialog(context);

View v = LayoutInflater.from(context).inflate(R.layout.dialog_resource, null);

this.resourceDialogTitle = v.findViewById(R.id.dialog_resource_title);
this.resourceDialogDescription = v.findViewById(R.id.dialog_resource_description);
this.resourceDialogCancel = v.findViewById(R.id.dialog_resource_cancel);
this.resourceDialogSave = v.findViewById(R.id.dialog_resource_save);

resourceDialog.setContentView(v);
// Set Color of Root View (Otherwise white Background in the Corners)
resourceDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);

// Getting the Display Metrics to set Size of Dialog
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
int width = displayMetrics.widthPixels;

// Setting the Size
resourceDialog.getWindow().setLayout((width - 128), ViewGroup.LayoutParams.WRAP_CONTENT);

resourceDialog.setCanceledOnTouchOutside(false);

最佳答案

您可以尝试以下代码来获取自定义对话框:

XML 布局文件(R.layout.dialog_custom_layout):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/padding_8dp">

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="User Details"
android:gravity="center"/>

<EditText
android:id="@+id/email_EditText"
android:layout_height="wrap_content"
android:hint="@string/email"
android:inputType="textEmailAddress"
android:imeOptions="actionNext"
android:maxLines="1"
android:layout_width="match_parent"/>

<EditText
android:id="@+id/password_EditText"
android:layout_height="wrap_content"
android:hint="@string/password"
android:inputType="text"
android:imeOptions="actionDone"
android:maxLines="1"
android:layout_width="match_parent"/>

<Button
android:id="@+id/btnRegister"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_marginStart="@dimen/margin_8dp"
android:layout_marginEnd="@dimen/margin_8dp"
android:layout_height="wrap_content"
android:text="Register"/>

</LinearLayout>

用于扩展自定义布局的 Kotlin 代码:

val alertDialog = AlertDialog.Builder(context)
val customView = LayoutInflater.from(context)
.inflate(R.layout.dialog_custom_layout, null)
val btnRegister = customView.btnRegister
alertDialog.setView(customView)
val customDialog = alertDialog.create()
customDialog.show()
btnRegister.setOnClickListener {
//perform registration
}

PS:您可以根据需要更改布局!!

关于java - 使用 Wrap Content 作为 LayoutParams 时,Android Studio 对话框按钮超出屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56734797/

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