问题
I am busy creating a less complicated version of NinePatchDrawable
that tiles the inner panels instead of stretching them.
I can implement the actual logic to do the rendering and such.
However, I can't find documentation about how to use this Drawable
in the XML files. Is this possible? That is, can I have a <tileable-nine-patch>
, or some such, tag I can use to define resources?
回答1:
Unfortunately it is not possible to use custom drawables in XML files (for API 23 and below) due to potential security issues. See here for a Google Groups thread about this very topic with a response from Romain Guy, one of the Android developers.
You can still use them in your Java code though.
Update:
As LeoFarage points out in the comments, starting in API 24 you can now use custom drawables in XML files but only within your application package.
回答2:
Starting Android API 24, custom Drawables classes can be used in XML only within your package.
Custom drawables classes may be used in XML in multiple ways:
Using the fully-qualified class name as the XML element name. For this method, the custom drawable class must be a public top-level class.
<com.yourapp.MyCustomDrawable
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#ffff0000"/>
Using drawable as the XML element name and specifying the fully-qualified class name from the class attribute. This method may be used for both public top-level classes and public static inner classes.
<drawable xmlns:android="http://schemas.android.com/apk/res/android"
class="com.myapp.MyTopLevelClass$InnerCustomDrawable"
android:color="#ffff0000" />
Note: that is not supported by support library.
来源:https://stackoverflow.com/questions/9019044/create-a-custom-drawable-and-use-it-in-xml