Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: Using selector to set background color for image view

I am trying to set the background color of an image view.

 <ImageView 
     android:id="@+id/my_image"
     android:src="@drawable/my_icon"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"    
     android:layout_weight="1"  
     android:clickable="true" 
     android:layout_alignParentLeft="true"
     android:background="@drawable/selector_image_view" /> 

I am using the following selector.

 <?xml version="1.0" encoding="utf-8"?> 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">     
 <item android:state_selected="true" android:background="@color/Violet" />    
 <item android:state_pressed="true" android:background="@color/red" />
 <item android:background="@color/white" />
 </selector>

But, it crashes if I try to use the selector with a runtime exception. What am I doing wrong?

My logcat

E/AndroidRuntime( 4196): FATAL EXCEPTION: main
E/AndroidRuntime( 4196): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.X.XCamera/com.X.XCamera.XCameraActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class <unknown>
E/AndroidRuntime( 4196):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
E/AndroidRuntime( 4196):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime( 4196):    at android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime( 4196):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime( 4196):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 4196):    at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 4196):    at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime( 4196):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 4196):    at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 4196):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
E/AndroidRuntime( 4196):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
E/AndroidRuntime( 4196):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 4196): Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class <unknown>
E/AndroidRuntime( 4196):    at android.view.LayoutInflater.createView(LayoutInflater.java:513)
E/AndroidRuntime( 4196):    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
E/AndroidRuntime( 4196):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
E/AndroidRuntime( 4196):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
E/AndroidRuntime( 4196):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
E/AndroidRuntime( 4196):    at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
E/AndroidRuntime( 4196):    at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
E/AndroidRuntime( 4196):    at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
E/AndroidRuntime( 4196):    at com.X.XCamera.Settings.<init>(Settings.java:52)
E/AndroidRuntime( 4196):    at com.X.XCamera.XCameraActivity.onCreate(XCameraActivity.java:92)
E/AndroidRuntime( 4196):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime( 4196):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime( 4196):    ... 11 more
E/AndroidRuntime( 4196): Caused by: java.lang.reflect.InvocationTargetException
E/AndroidRuntime( 4196):    at android.widget.ImageView.<init>(ImageView.java:108)
E/AndroidRuntime( 4196):    at java.lang.reflect.Constructor.constructNative(Native Method)
E/AndroidRuntime( 4196):    at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
E/AndroidRuntime( 4196):    at android.view.LayoutInflater.createView(LayoutInflater.java:500)
E/AndroidRuntime( 4196):    ... 22 more
E/AndroidRuntime( 4196): Caused by: android.content.res.Resources$NotFoundException: File res/drawable/selector_image_view.xml from drawable resource ID #0x7f02000e
E/AndroidRuntime( 4196):    at android.content.res.Resources.loadDrawable(Resources.java:1697)
E/AndroidRuntime( 4196):    at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
E/AndroidRuntime( 4196):    at android.view.View.<init>(View.java:2045)
E/AndroidRuntime( 4196):    at android.widget.ImageView.<init>(ImageView.java:112)
E/AndroidRuntime( 4196):    ... 26 more
E/AndroidRuntime( 4196): Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #3: <item> tag requires a 'drawable' attribute or child tag defining a drawable
E/AndroidRuntime( 4196):    at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:167)
E/AndroidRuntime( 4196):    at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
E/AndroidRuntime( 4196):    at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
E/AndroidRuntime( 4196):    at android.content.res.Resources.loadDrawable(Resources.java:1694)
E/AndroidRuntime( 4196):    ... 29 more
W/ActivityManager( 1707):   Force finishing activity com.X.XCamera/.XCameraActivity
I/IMGSRV  ( 1707): gralloc.c:803: gralloc_device_alloc: Allocated a new surface:
I/IMGSRV  ( 1707):        width -> 800
I/IMGSRV  ( 1707):       height -> 382
I/IMGSRV  ( 1707):       format -> 1 (HAL_PIXEL_FORMAT_RGBA_8888)
like image 299
Namratha Avatar asked Jan 10 '12 08:01

Namratha


People also ask

How do you get the background color on a view?

To get background color of a Layout: LinearLayout lay = (LinearLayout) findViewById(R. id. lay1); ColorDrawable viewColor = (ColorDrawable) lay.

How do I change the default background color in Android Studio?

Create background color. By default each activity in Android has a white background. To change the background color, first add a new color definition to the colors. xml file in the values resource folder like the following.

What tool do we use to display images in Android select one?

ImageView class is used to display any kind of image resource in the android application either it can be android.


1 Answers

Your Logcat:

E/AndroidRuntime( 4196): Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #3: tag requires a 'drawable' attribute or child tag defining a drawable

LogCat is pointing out that your <item> tag should include android:drawable tag.

You selector file should look like this:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android">     
     <item android:state_selected="true" android:drawable="@color/Violet" />    
     <item android:state_pressed="true" android:drawable="@color/red" />
     <item android:drawable="@color/white" />
</selector>
like image 186
Adil Soomro Avatar answered Oct 12 '22 03:10

Adil Soomro