0

У меня есть RelativeLayout, фон которого является выделенным, который имеет ссылки на цвета. Я хочу изменить цвета в зависимости от стиля.Как ссылаться на цвета в чертеже, используя стиль в RelativeLayout

Я попытался 2 варианта, но ни один из них работают:

ВАРИАНТ 1:

RelativeLayout

<RelativeLayout 
    style="@style/pink" 
    android:background="@drawable/circlebutton" 
    android:layout_width="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:id="@+id/circlebutton_image_map" 
    android:layout_height="wrap_content"> 
      <ImageView 
       android:layout_marginTop="20sp" 
       android:layout_centerHorizontal="true" 
       android:layout_alignParentTop="true" 
       android:layout_width="@dimen/icon_size" 
       android:layout_height="@dimen/icon_size" 
       android:src="@drawable/map_verdelab"/> 
</RelativeLayout> 

Стиль (Рез/значения/styles.xml)

<style name="pink"> 
    <item name="normalcolor">@color/rosa_normal</item> 
    <item name="lightcolor">@color/rosa_light</item> 
    <item name="shadowcolor">@color/rosa_letter_shadow</item> 
</style> 

Drawable (RES/вытяжке/circlebutton.xml)

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

     <item> 
      <shape android:shape="oval"> 
       <size android:width="200sp" android:height="200sp" /> 

      </shape> 
     </item> 
     <item android:top="12sp" android:left="12sp" android:right="6sp" android:bottom="6sp"> 
      <shape android:shape="oval"> 
       <solid android:color="?shadowcolor"/> 
      </shape> 
     </item> 
     <item android:top="12sp" android:left="12sp" android:right="8sp" android:bottom="8sp"> 
      <shape android:shape="oval"> 
       <gradient android:angle="315" android:startColor="?lightcolor" android:centerColor="?normalcolor" android:endColor="?normalcolor" /> 
      </shape> 
     </item> 
    </layer-list> 
    </item> 
<item > 

    <layer-list > 
     <item> 
      <shape android:shape="oval"> 
       <size android:width="200sp" android:height="200sp" /> 

      </shape> 
     </item> 
     <item android:top="10sp" android:left="10sp" android:right="6sp" android:bottom="6sp"> 
      <shape android:shape="oval"> 
       <solid android:color="?shadowcolor"/> 
      </shape> 
     </item> 
     <!-- Inset --> 
     <item android:top="10sp" android:left="10sp" android:right="10sp" android:bottom="10sp"> 
      <shape android:shape="oval"> 
       <gradient android:angle="315" android:startColor="?lightcolor" android:centerColor="?normalcolor" android:endColor="?normalcolor" /> 
      </shape> 
     </item> 
    </layer-list> 
</item> 

ВАРИАНТ 2

Drawable одно и то же. Я просто включил android:background в pink style

RelativeLayout

<RelativeLayout 
    style="@style/pink" 
    android:layout_width="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:id="@+id/circlebutton_image_map" 
    android:layout_height="wrap_content"> 
      .... 
</RelativeLayout> 

Стиль

<style name="pink"> 
    <item name="normalcolor">@color/rosa_normal</item> 
    <item name="lightcolor">@color/rosa_light</item> 
    <item name="shadowcolor">@color/rosa_letter_shadow</item> 
    <item name="android:background">@drawable/circlebutton</item> 
</style> 

же LogCat Ошибка:

  Caused by: android.content.res.Resources$NotFoundException: File res/drawable/circlebutton.xml from drawable resource ID #0x7f020041 
       at android.content.res.Resources.loadDrawable(Resources.java:3451) 
       at android.content.res.TypedArray.getDrawable(TypedArray.java:614) 
       at android.view.View.<init>(View.java:3585) 
       at android.view.View.<init>(View.java:3515) 
       at android.view.ViewGroup.<init>(ViewGroup.java:464) 
       at android.widget.RelativeLayout.<init>(RelativeLayout.java:236) 
       at java.lang.reflect.Constructor.constructNative(Native Method)  
       at java.lang.reflect.Constructor.newInstance(Constructor.java:423)  
       at android.view.LayoutInflater.createView(LayoutInflater.java:601)  
       at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)  
       at android.view.LayoutInflater.onCreateView(LayoutInflater.java:676)  
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:701)  
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:762)  
       at android.view.LayoutInflater.inflate(LayoutInflater.java:499)  
       at android.view.LayoutInflater.inflate(LayoutInflater.java:398)  
       at android.view.LayoutInflater.inflate(LayoutInflater.java:354)  
       at android.view.View.inflate(View.java:17718)  
       at palmaslab.com.palmap.utils.CircleButton.init(CircleButton.java:66)  
       at palmaslab.com.palmap.utils.CircleButton.<init>(CircleButton.java:36)  
       at java.lang.reflect.Constructor.constructNative(Native Method)  
       at java.lang.reflect.Constructor.newInstance(Constructor.java:423)  
       at android.view.LayoutInflater.createView(LayoutInflater.java:601)  
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:703)  
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:762)  
       at android.view.LayoutInflater.inflate(LayoutInflater.java:499)  
       at android.view.LayoutInflater.inflate(LayoutInflater.java:398)  
       at android.view.LayoutInflater.inflate(LayoutInflater.java:354)  
       at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:331)  
       at android.app.Activity.setContentView(Activity.java:2018)  
       at palmaslab.com.palmap.activities.MainMenuActivity.onResume(MainMenuActivity.java:291)  
       at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1199)  
       at android.app.Activity.performResume(Activity.java:5526)  
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3046)  
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3085)  
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2498)  
       at android.app.ActivityThread.access$800(ActivityThread.java:166)  
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)  
       at android.os.Handler.dispatchMessage(Handler.java:102)  
       at android.os.Looper.loop(Looper.java:136)  
       at android.app.ActivityThread.main(ActivityThread.java:5584)  
       at java.lang.reflect.Method.invokeNative(Native Method)  
       at java.lang.reflect.Method.invoke(Method.java:515)  
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)  
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)  
       at dalvik.system.NativeStart.main(Native Method)  
      Caused by: java.lang.UnsupportedOperationException: Ca 

Я не знаю, как использовать эти цвета для рисования, используя только стиль.

ответ

0

@drawable/circlebutton существует на доступной директории? ошибка говорит, что эта кнопка круга не найдена, вероятно, не существует ресурса.

Смежные вопросы