Смешная ошибка в декларации формы Android xml - PullRequest
7 голосов
/ 07 декабря 2010

Я создавал фигуру для использования в качестве фона кнопки. Я делаю полосу кнопок, и у левого края будут закругленные углы слева, а у последнего справа будут закругленные углы справа. Это довольно просто, и Api Docs покажет вам, как это сделать. Однако, когда я использовал android:topLeftRadius и android:bottomLeftRadius, результат в пользовательском интерфейсе был таким, как будто я поставил bottomRightRadius. Такое же поведение было верно для другой стороны. Похоже, что кто бы ни реализовал это поменял местами bottomRight и bottomLeft. Я выложу фрагмент кода ниже.

Есть ли какая-то логическая причина для этого, которую я мог бы пропустить? Или, если это было ошибкой со стороны инженеров Android, останется ли она обратно совместимой, как только они это исправят? Я предполагаю, что они должны будут сделать все новые атрибуты, чтобы сохранить действительные старые (возможно, leftTop вместо topLeft?).

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape>
            <solid android:color="#99000000" />
            <padding
                android:top="8dp"
                android:left="8dp"
                android:right="8dp"
                android:bottom="8dp" />
            <corners
                android:topLeftRadius="8dp"
                android:bottomRightRadius="8dp" />
        </shape>
    </item>

Ответы [ 3 ]

8 голосов
/ 07 декабря 2010

Похоже на ошибку, см. этот вопрос и этот вопрос .

4 голосов
/ 07 декабря 2010

Кажется, я не могу его найти, но вспоминаю, что где-то читал, что была ошибка, которая требовала от вас сначала переопределить полный радиус, а затем отменить те, у которых вы не хотите иметь радиус; например:

<corners
    android:radius="8dp"
    android:topRightRadius="0dp"
    android:bottomLeftRadius="0dp"
    />

Я не гарантирую успеха, но вы можете попробовать.

РЕДАКТИРОВАТЬ: Ах, пончик, кажется, правильный ответ.

1 голос
/ 13 сентября 2012
<corners android:topLeftRadius="0.1dp" 
android:topRightRadius="6dp" 
android:bottomRightRadius="0.1dp" 
android:bottomLeftRadius="6px" />

Это будет работать для допуска и правого верха.отрегулируйте его по вашему требованию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...