#android #background #rounded-corners
#Android #фон #закругленные углы
Вопрос:
У меня есть простое действие, и я хотел бы иметь форму закругленного прямоугольника. В действии используется полупрозрачный объект рисования. Я видел всплывающие окна других разработчиков, которые являются полупрозрачными (не тема диалога) со скругленными углами, и я пытаюсь воспроизвести это. Буду признателен за любую помощь.
Вот код, который у меня есть на данный момент, который создает прямоугольное полупрозрачное окно в середине экрана.
<style name="Theme.TranslucentDialog">
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowIsTranslucent">true</item>
<!-- Note that we use the base animation style here (that is no
animations) because we really have no idea how this kind of
activity will be used. -->
<item name="android:windowBackground">@drawable/translucent_background</item>
<item name="android:windowNoTitle">true</item>
<item name="android:colorForeground">#fff</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
</style>
<drawable name="translucent_background">#60000000</drawable>
Ответ №1:
Я не смог этого сделать, сгенерировав пользовательскую форму в коде. Мне пришлось выполнить это, создав свой собственный файл png с 9 патчами. Вот последняя тема, которую я создал:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme" parent="android:Theme">
</style>
<style name="Theme.TranslucentDialog">
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:colorForeground">#ffffff</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
<item name="android:windowBackground">@drawable/notification_panel</item>
</style>
</resources>
Пожалуйста, обратите внимание на строку:
<item name="android:windowBackground">@drawable/notification_panel</item>
Это строка, которая задает фон действия для изображения с 9 патчами, которое я создал. Это изображение может быть любым, изображением, 9-патчем или пользовательской формой. Я использовал исправление 9, чтобы у меня была красивая граница и закругленные углы, сохраняя при этом очень прозрачное окно активности (показывая все, что за ним, но оставляя приятный оттенок серого там, где расположено окно активности).
Уведомление о 9 исправлениях_panel.9.png находится в моей папке для рисования. Сначала я был немного напуган созданием собственного изображения с 9 патчами, но оказалось, что с помощью Inkscape и утилиты Android draw9patch.bat я смог сделать это с удовлетворительными результатами.
Дайте мне знать, если у кого-нибудь возникнут какие-либо вопросы.
Комментарии:
1. Можете ли вы предоставить общий доступ к файлу изображения с 9 путями?
2. Я не знаю, как прикреплять файлы png к сообщениям: (Если вы загуглите в поисках «Исправления для Android 9», я уверен, что вы сможете найти примеры.
Ответ №2:
Вам нужно создать пользовательскую форму. Вот пример XML-файла (белый прямоугольник со скругленными углами):
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#ffffff"
android:endColor="#ffffff"/>
<corners
android:radius="8dp"/>
</shape>
Комментарии:
1. Вы уверены, что можете сделать это с помощью полупрозрачного объекта рисования? <имя для рисования=»translucent_background»>#60000000</drawable>
2. Просто замените
startColor
иendColor
на #600000003. Спасибо, я попробую и дам вам знать, как это получается.
4. Извините, у меня это не сработало. : ( Если у вас есть полный набор или рабочий код, я хотел бы его увидеть.
5. Что не сработало? Вы заменили
@drawable/translucent_background
на новый xml, отображаемый выше? Можете ли вы более подробно описать то, что вы видите?
Ответ №3:
Хотя этому вопросу почти 10 лет, для достижения этого вам нужно создать XML-файл в папке drawable. В этом файле определите форму, подобную этой :
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#0f000000"
android:endColor="#0f000000"/>
<corners
android:radius="10dp"/>
</shape>
В Style.xml создайте новый стиль, и в нем создайте элемент для фона и определите @drawable/yourFileNameInDrawbaleFolder.xml
<style name="AppTheme.customTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="windowNoTitle">true</item>
<item name="android:background">@drawable/dialogbg</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:radius">15dp</item>
</style>