Я разработал всплывающее окно в своем приложении и использовал следующую фигуру в качестве границы:
<?xml version = "1.0" encoding = "utf-8"?>
<shape xmlns:android = "http://schemas.android.com/apk/res/android" android:shape = "rectangle">
<corners android:radius = "20dp"/>
<padding android:left = "20dp" android:right = "20dp" android:top = "10dp" android:bottom = "20dp"/>
<solid android:color = "@android:color/holo_green_light"/>
<stroke android:color = "@android:color/black" android:width = "2dp"/>
</shape>
И вот как выглядит мой XML-макет:
<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout 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"
tools:context = ".popChart"
android:background = "@drawable/customborder"
>
<ImageView
android:id = "@+id/closeIcon"
android:layout_width = "25dp"
android:layout_height = "25dp"
android:layout_alignParentEnd = "true"
android:src = "@drawable/close" />
<RelativeLayout
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:layout_centerInParent = "true"
android:paddingTop = "30dp">
<com.github.mikephil.charting.charts.LineChart
android:id = "@+id/lineC"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:background = "@android:color/white"
tools:layout_editor_absoluteX = "8dp"
tools:layout_editor_absoluteY = "8dp" />
</RelativeLayout>
</RelativeLayout>
Граница в порядке, но белые углы этого рисованного фона все еще видны:
Поскольку фон, который у меня за этим всплывающим окном, не сплошной, белые углы выделяются и выглядят плохо. Есть ли способ избавиться от них или сделать их прозрачными?
Скорее всего, проблема в том, что у вашей темы белый фон для окон. Вам нужно будет определить новую тему:
<style name = "customStyle" parent = "@android:style/Theme.Dialog">
<item name = "android:windowBackground">@android:color/transparent</item>
</style>
Затем примените его к своему окну:
new PopupWindow(new ContextThemeWrapper(context, R.style.customStyle)))
// Set your window size and focusable if needed...
Да, просто ожидайте, что все ваши окна будут иметь прозрачный фон. Таким образом, ваши макеты нужно будет настроить по мере необходимости.
Я не использую для этого класс PopupWindow, я просто устанавливаю ширину и высоту макета с помощью этой функции: getWindow (). SetLayout ((int) (width * 0.9), (int) (height * 0.6)) ; Могу ли я изменить тему по умолчанию, чтобы сделать это напрямую?