2012-01-27 5 views
2

Drawableサブクラス(この場合はLayerDrawable)をViewのバックグラウンドとして使用して、ドロアブルを作成しようとしていますが、ドローラブルは意図したとおりに計算して表示しません。このフォーラムの助けを借りて、私の問題の原因となっているソースコードの特定の行を見つけました。サブクラスを作成したり、コードを変更したり、必要なことをすることができます。API固有のXMLタグを使用するカスタムクラスを作成できますか?

私の質問は、私はノー意図しない副作用で新しいクラスを作ると私は古い機能にアクセスする必要は決してありませんと仮定すると、それは私の更新を作成するためにoriginal Drawable's xml tag structure(例。layer-list)で新しいDrawableを使用することが可能です同じ方法で引き出し可能ですか?

たとえば、置き換えます。これで

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

    <item 
     android:id="@+id/resource_name" 
     android:drawable=drawable/drawable_resource" /> 

</layer-list> 

をこのような

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

    <item 
     android:id="@+id/resource_name" 
     android:drawable=drawable/drawable_resource" /> 

</package.MyLayerDrawable> 
+0

私はあなたがあなた自身のViewオブジェクトを作成する場合、私はそれがそのように動作することを知っている、そう思うだろう。しかし、私は個人的に試したことがないので、私は確かに言うことができませんでした。 – FoamyGuy

+0

私は、レイヤードラブルをサブクラス化するだけの単純さではないことを確かめました。アンドロイドのウェブサイトには、それに関するドキュメントはないようです。 – happydude

答えて

2

カスタムドロワブルは、主にセキュリティ上の理由のために、XMLから許可されていません。 XML ドロアブルは他のプロセス(ランチャー またはシステムプロセスを含む)によってリソースとしてロードすることができます。これらのプロセスでランダムに3番目の パーティコードを実行するのはひどい考えです。

非常に残念なことに、カスタムドロアブルを適切にサンドボックス化する代わりに、完全に禁止することに決めました。

http://groups.google.com/group/android-developers/browse_thread/thread/825a5d8b401d3332

0

を? :

package your.packepage; 

public class RemoteImageView extends ImageView { 
    .... 
} 

<your.packpage.RemoteImageView 
android:id="@+id/img_id" 
android:layout_width="10dp" 
android:layout_height="fill_parent" 
android:src="@drawable/ic_launcher" /> 
+0

私の目標は 'View'ではなく' LayerDrawable'をサブクラス化することです。上記のコードでは、たとえば、新しいサブクラスxmlで 'item'タグを直接使用したいと思います。 – happydude

関連する問題