2015-06-03 3 views
2

Я пытаюсь создать кнопку с радиальным градиентом, но каждый раз, когда я загружаю свое приложение, он падает.Невозможно создать радиальный градиент

mylayout.xml:

... 

<Button 
    android:id="@+id/mybutton" 
    android:layout_width="@dimen/btnwidth" 
    android:layout_height="@dimen/btnheight" 
    android:background="@drawable/mybutton" /> 

... 

mybutton.xml:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="oval"> 

      <gradient 
       android:type="radial" 
       android:startColor="@color/my_start_color" 
       android:endColor="@color/my_end_color"/> 
     </shape> 
    </item> 
</layer-list> 

Ниже журнал ошибок. Я нацеливание Android SDK 22.

НЕУСТРАНИМОГО ИСКЛЮЧЕНИЕ: главный java.lang.RuntimeException: Не удается запустить активность ComponentInfo {com.my.app/com.my.app.MyActivity}: android.view .InflateException: Binary XML файл строка # 324: Ошибка накачивания класса Button в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2339) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2413) в android.app.ActivityThread.access $ 800 (ActivityThread.java:155) в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1317) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:135) на android.app.ActivityThread.main (ActivityThread.java:5343) на java.lang.reflect.Method.invoke (собственный метод) в java.lang.reflect.Method.invoke (Method.java:372) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java : 905) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:700) Вызвано: android.view.InflateException: двоичная строка XML-файла # 324: Ошибка раздувания класса Button на android.view .LayoutInflater.createViewFromTag (LayoutInflater.java:763) на android.view.LayoutInflater.rInflate (LayoutInflater.java:806) на(0)) при android.support.v4.app.Fragment.performCreateView (Fragment.java:1789) на android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:924) в android.support.v4 .app.FragmentManagerImpl.moveToState (FragmentManager.java:1116) на android.support.v4.app.FragmentManagerImpl.addFragment (FragmentManager.java:1218) на android.support.v4.app.FragmentManagerImpl.onCreateView (FragmentManager .java: 2170) at android.support.v4.app.FragmentActivity.onCreateView (FragmentActivity.java:300) на android.support.v7.app.AppCompatDelegateImplV7.callActivityOnCreateView (AppCompatDelegateImplV7.java:816) на android.support.v7.app .AppCompatDelegateImplV11.callActivityOnCreateView (AppCompatDelegateImplV11.java:72) на android.support.v7.app.AppCompatDelegateImplV7.onCreateView (AppCompatDelegateImplV7.java:804) в android.support.v4.view.LayoutInflaterCompatHC $ FactoryWrapperHC.onCreateView (LayoutInflaterCompatHC .java: 44) at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:725) на android.view.LayoutInfla ter.rInflate (LayoutInflater.java:806) на android.view.LayoutInflater.rInflate (LayoutInflater.java:809) на android.view.LayoutInflater.inflate (LayoutInflater.java:504) на android.view.LayoutInflater.inflate (LayoutInflater.java:414) на android.view.LayoutInflater.inflate (LayoutInflater.java:365) на android.support. v7.app.AppCompatDelegateImplV7.setContentView (AppCompatDelegateImplV7.java:249) на android.support.v7.app.AppCompatActivity.setContentView (AppCompatActivity.java:106) на com.my.app.MyActivity.onCreate (MyActivity.java : 1033) на android.app.Activity.performCreate (Activity.java:6010) при android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1129) на android.app.ActivityThread.performLaunchActivity (ActivityThread.java: 2292) ... 1 -Более Вызванный: android.content.res.Resources $ NotFoundException: Файл Реза/вытяжка-ИПЧР/mybutton.xml из вытяжки ресурсов ID # 0x7f02008a на android.content.res.Resources.loadDrawableForCookie (Resources.java: 2482) на android.content.res.Resources.loadDrawable (Resources.java:2384) на android.content.res.TypedArray.getDrawable (TypedArray.java:749) на android.view.View. (View.java : 3742) на android.widget.TextView. (TextView.java:637) на android.widget.Button. (Button.java:111) на android.widget.Button. (Button.java:107) на android.support.v7.widget.AppCompatButton. (AppCompatButton.java:60) по адресу android.support.v7.widget.AppCompatButton (AppCompatButton.java:56) на android.support.v7.internal.app.AppCompatViewInflater.createView

ответ

0

Вы можете попробовать использовать это:.

Определить bg_button.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/mybutton" android:state_pressed="true" /> 
    <item android:drawable="@drawable/mybutton" /> 
</selector> 

Здесь вы также можете определить нажатое состояние. Это имеет смысл, когда вы используете кнопку.

И это будет ваш mybutton.xml:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 

    <gradient 
     android:type="radial" 
     android:startColor="@color/my_start_color" 
     android:endColor="@color/my_end_color"/> 
</shape> 

И в конце концов, вы должны установить bg_button на фоне вашей кнопки:

<Button 
    android:id="@+id/mybutton" 
    android:layout_width="@dimen/btnwidth" 
    android:layout_height="@dimen/btnheight" 
    android:background="@drawable/bg_button" /> 
3

Вам нужен радиус градиента:

<gradient 
    android:type="radial" 
    android:gradientRadius="40" 
    android:startColor="@color/my_start_color" 
    android:endColor="@color/my_end_color"/>