Android LinearLayout Градиентный Фон
у меня возникли проблемы с применением градиентного фона к краю.
Это должно быть относительно просто из того, что я прочитал, но это просто не работает. Для справки я разрабатываю на 2.1-update1.
header_bg.XML-код:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="90"
android:startColor="#FFFF0000"
android:endColor="#FF00FF00"
android:type="linear"/>
</shape>
main_header.XML-код:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:orientation="horizontal"
android:background="@drawable/header_bg">
</LinearLayout>
Если я изменю @drawable / header_bg на цвет - например, #FF0000, он отлично работает. Я упускаю что-то очевидное?
7 ответов:
ок мне удалось решить эту проблему с помощью селектора. Смотрите код ниже:
main_header.XML-код:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="50dip" android:orientation="horizontal" android:background="@drawable/main_header_selector"> </LinearLayout>
main_header_selector.XML-код:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <gradient android:angle="90" android:startColor="#FFFF0000" android:endColor="#FF00FF00" android:type="linear" /> </shape> </item> </selector>
надеюсь, это поможет кому-то, кто имеет ту же проблему.
также можно иметь третий цвет (центр). И различные виды форм.
например, в drawable / gradient.XML-код:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#000000" android:centerColor="#5b5b5b" android:endColor="#000000" android:angle="0" /> </shape>
это дает вам черный-серый-черный (слева направо), который является моим любимым темным фоном atm.
Не забудьте добавить градиент.xml в качестве фона в вашем макете xml:
android:background="@drawable/gradient"
также можно вращать, с:
угол="0"
дает вам вертикальная линия
и
угол="90"
дает вам горизонтальную линию
возможные углы:
0, 90, 180, 270.
также есть несколько различных видов форм:
android: shape= "прямоугольник"
округлую форму:
android: shape= "овал"
и, вероятно, еще несколько.
надеюсь, что это помогает, ура!
Попробуйте удалить android: gradientRadius= "90". Вот один, который работает для меня:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <gradient android:startColor="@color/purple" android:endColor="@color/pink" android:angle="270" /> </shape>
в XML Drawable File:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <gradient android:angle="90" android:endColor="#9b0493" android:startColor="#38068f" android:type="linear" /> </shape> </item> </selector>
в вашем файле макета: android: background= "@drawable / gradient_background"
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/gradient_background" android:orientation="vertical" android:padding="20dp"> ..... </LinearLayout>
моя проблема была .расширение xml не было добавлено к имени файла вновь созданного XML-файла. Добавляя то .расширение xml исправило мою проблему.
Я не знаю, поможет ли это кому-нибудь, но моя проблема заключалась в том, что я пытался установить градиент в свойство " src " ImageView следующим образом:
<ImageView android:id="@+id/imgToast" android:layout_width="wrap_content" android:layout_height="60dp" android:src="@drawable/toast_bg" android:adjustViewBounds="true" android:scaleType="fitXY"/>
не на 100% уверен, почему это не сработало, но теперь я изменил его и поместил drawable в Свойство "background" родителя ImageView, которое является RelativeLayout в моем случае, например: (это сработало успешно)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:id="@+id/custom_toast_layout_id" android:layout_height="match_parent" android:background="@drawable/toast_bg">