如果设备语言为阿拉伯语,布局设计会发生变化

问题描述 投票:0回答:1

我在 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()

如何确保对话框布局宽度在不同语言之间保持一致,特别是在处理阿拉伯语模式下从右到左的文本时?

android android-layout constants android-constraintlayout arabic
1个回答
0
投票

固定按钮的高度和宽度。它应该有效

<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" />
© www.soinside.com 2019 - 2024. All rights reserved.