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)
To get background color of a Layout: LinearLayout lay = (LinearLayout) findViewById(R. id. lay1); ColorDrawable viewColor = (ColorDrawable) lay.
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.
ImageView class is used to display any kind of image resource in the android application either it can be android.
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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With