Как и другие уже заметили, эффект, который вы хотите для того чтобы достигнуть не градиент. Если я понимаю, что вы пытаетесь достичь flexible image, раздел: 1: 1.
Получение этого не возможно ни через .xml файл, ни через 9patch (вы теряете резкий переход между черным и белым).
Первое решение заключается в использовании LinearLayout
и layout_weight
s. Вы можете добавить 'layer' к вашему макету - если бы это был фон - под другими компонентами. Это «слоя» выглядит следующим образом:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/black"/>
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/white"/>
</LinearLayout>
Если вы используете один или два раза в макете эта дополнительная/вложенной компоновка не будет проблемой, но избежать таких решений внутри элементов коллекции.
Вы также можете попробовать с обычного двухцветной PNG файла и ImageView
. (Совет: Подходящие размеры этого файла может дать вам резкий переход.)
Третий способ сделать это, в легкий один, но отнимает немного времени, чтобы переопределить View.onDraw() метод и краски как половины до того, как будет составлено другое содержимое.
Тогда вы не хотите ** градиент ** вообще. Вам нужно только 2 цвета - без перехода. –