Есть ли какой-либо способ определить область обрезки ViewGroup в Android (Honeycomb)? Например, у меня есть ListView с фоном изображения со скругленными углами. Когда я прокручиваю список, дочерние элементы выступают за углы фона - я бы предпочел, чтобы они были обрезаны в пределах закругленных углов.
Левое изображение - это то, что оно делает в данный момент, а правое - это то, что я хотел бы.
Я смотрел ClipDrawable, но, похоже, это может использоваться только для индикаторов выполнения?
Кроме того, я пытаюсь сделать это в виджете. Поэтому я не могу использовать пользовательский вид и переопределять onDraw для маскировки.
Спасибо!
Переведено автоматически
Ответ 1
Убедитесь, что у layout есть фон со скругленными углами.
...а также создайте пользовательский объект рисования, подобный этому, который называется что-то вроде 'rounded', заменив в YOUR_BACKGROUND_COLOR и RADIUS_IN_DP , убедившись, что округление прямоугольника в DP соответствует вашему предыдущему радиусу обрезки в PX:
Все дочерние элементы будут обрезаны до границ, указанных вами в переопределении onDraw (), и фон будет добавлен на основе вашего "округленного" объекта рисования.
Ответ 3
Создайте пользовательский макет с помощью overridden onDraw(Canvas canvas)
Или, другая идея, используйте FrameLayout, расположите маску клипа поверх группы просмотра. Маска клипа должна иметь прозрачную середину и непрозрачные границы.
В обоих случаях, я думаю, будет сложно обрабатывать пользовательский ввод...