如何摆脱 AlertDialog 中的矩形 TextView?
How can I get rid of rectangular TextView in AlertDialog?
所以我试图将警报对话框制作成圆形,但我不能强制 TextView
为相同的形状。它总是有方形边框。 square outline / dialog phone。
我应该使用另一个视图吗?或者我根本做不到?
我的 XML
TextView
:xml textview
<TextView
android:id="@+id/expressionTextView"
android:layout_width="300dp"
android:layout_height="300dp"
android:drawableTop="@drawable/correct_answer"
android:drawableTint="@color/black"
android:background="@drawable/oval_background"
android:fontFamily="@font/roboto_light"
android:gravity="center"
android:paddingTop="110dp"
android:paddingBottom="110dp"
android:text="@string/youWin"
android:elevation="30dp"
android:textSize="40sp"
android:layout_gravity="center" />
我正在尝试从片段启动警报对话框,所以这里是 Kotlin 代码:
val dialogBinding = AlertDialogBinding.inflate(layoutInflater)
val dialog = AlertDialog.Builder(activity).apply {
setCancelable(true)
setView(dialogBinding.root)
}.create()
dialog.show()
这个白色部分与TextView
无关,而是与对话框的背景有关window; android 对话框与主应用程序 window 不同 window。
因此,要修复它,您需要使用 window.setBackgroundDrawable()
:
将透明背景应用到对话框 window 本身
val dialogBinding = AlertDialogBinding.inflate(layoutInflater)
val dialog = AlertDialog.Builder(activity).apply {
setCancelable(true)
setView(dialogBinding.root)
}.create().apply {
window?.setBackgroundDrawable(ResourcesCompat.getDrawable(resources, android.R.color.transparent, null))
}
dialog.show()
注意:我假设您已经在 oval_background.xml
中使用了可绘制的透明背景;如果你的没有工作,这是一个:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#25C651" />
</shape>
所以我试图将警报对话框制作成圆形,但我不能强制 TextView
为相同的形状。它总是有方形边框。 square outline / dialog phone。
我应该使用另一个视图吗?或者我根本做不到?
我的 XML
TextView
:xml textview
<TextView
android:id="@+id/expressionTextView"
android:layout_width="300dp"
android:layout_height="300dp"
android:drawableTop="@drawable/correct_answer"
android:drawableTint="@color/black"
android:background="@drawable/oval_background"
android:fontFamily="@font/roboto_light"
android:gravity="center"
android:paddingTop="110dp"
android:paddingBottom="110dp"
android:text="@string/youWin"
android:elevation="30dp"
android:textSize="40sp"
android:layout_gravity="center" />
我正在尝试从片段启动警报对话框,所以这里是 Kotlin 代码:
val dialogBinding = AlertDialogBinding.inflate(layoutInflater)
val dialog = AlertDialog.Builder(activity).apply {
setCancelable(true)
setView(dialogBinding.root)
}.create()
dialog.show()
这个白色部分与TextView
无关,而是与对话框的背景有关window; android 对话框与主应用程序 window 不同 window。
因此,要修复它,您需要使用 window.setBackgroundDrawable()
:
val dialogBinding = AlertDialogBinding.inflate(layoutInflater)
val dialog = AlertDialog.Builder(activity).apply {
setCancelable(true)
setView(dialogBinding.root)
}.create().apply {
window?.setBackgroundDrawable(ResourcesCompat.getDrawable(resources, android.R.color.transparent, null))
}
dialog.show()
注意:我假设您已经在 oval_background.xml
中使用了可绘制的透明背景;如果你的没有工作,这是一个:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#25C651" />
</shape>