我在 Android 应用程序中遇到与自定义对话框相关的布局问题。在英语模式下,对话框可以完美显示,宽度设置为 match_parent。但是,当切换到阿拉伯语模式时,宽度似乎缩小了,并且布局看起来好像在包裹内容。
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
</data>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
app:cardCornerRadius="@dimen/margin_padding20"
android:background="@color/white"
app:cardBackgroundColor="@color/white"
app:cardElevation="@dimen/margin_padding0"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:paddingStart="@dimen/margin_padding20"
android:paddingEnd="@dimen/margin_padding20"
android:paddingTop="@dimen/margin_padding32"
android:paddingBottom="@dimen/margin_padding32"
android:layout_height="match_parent">
<ImageView
android:id="@+id/btnCrossIcon"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:src="@drawable/iconoir_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tvMsgSuccess"
app:layout_constraintTop_toBottomOf="@+id/btnCrossIcon"
android:layout_marginTop="@dimen/margin_padding20"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
style="@style/TextStyleMediumRegular"
android:text="@string/success"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tvMsgSuccess1"
app:layout_constraintTop_toBottomOf="@id/tvMsgSuccess"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:gravity="center"
style="@style/TextStyleMediumRegular"
android:text="@string/your_application_has_been_submitted"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnBackToSearch"
app:layout_constraintTop_toBottomOf="@id/tvMsgSuccess1"
android:layout_marginTop="@dimen/margin_padding48"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:text="@string/back_to_job_search"
android:textColor="@color/white"
android:backgroundTint="@color/blue"
android:gravity="center"
android:background="@drawable/btn_bg_blue"
android:textAllCaps="false"
app:layout_constraintEnd_toEndOf="parent"
android:layout_width="0dp"
android:layout_height="wrap_content" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</layout>
这就是我膨胀对话框布局的方式:
class ApplyJobDialog(context: Context) : Dialog(context), View.OnClickListener {
private lateinit var binding: ApplyjobMassageDialogBinding
init {
setCancelable(true)
}
override fun onCreate(savedInstanceState: Bundle?) {
binding = ApplyjobMassageDialogBinding.inflate(layoutInflater)
super.onCreate(savedInstanceState)
requestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(binding.root)
binding.btnBackToSearch.setOnClickListener(this)
binding.btnCrossIcon.setOnClickListener(this)
}
override fun onClick(v: View?) {
if (v != null) {
when (v.id) {
R.id.btnBackToSearch ->{
//listener?.onBackToJobSearchClicked()
dismiss()
val intent = Intent(context, Homepage::class.java)
context.startActivity(intent)
}
R.id.btnCrossIcon ->{
dismiss()
}
}
}
}
}
由此我显示对话框:
ApplyJobDialog(context).show()
如何确保对话框布局宽度在不同语言之间保持一致,特别是在处理阿拉伯语模式下从右到左的文本时?
固定按钮的高度和宽度。它应该有效
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnBackToSearch"
app:layout_constraintTop_toBottomOf="@id/tvMsgSuccess1"
android:layout_marginTop="@dimen/margin_padding48"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:text="@string/back_to_job_search"
android:textColor="@color/white"
android:backgroundTint="@color/blue"
android:gravity="center"
android:background="@drawable/btn_bg_blue"
android:textAllCaps="false"
app:layout_constraintEnd_toEndOf="parent"
android:layout_width="200dp"
android:layout_height="56dp" />