私は次のものを持っていますLayerDrawable
:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/image_source"
android:bottom="6dp"
android:drawable="@drawable/default"
android:left="14dp"
android:right="14dp"
android:top="6dp">
</item>
<item android:drawable="@drawable/metaphor_photo_portrait"/>
</layer-list>
コードから画像を動的に置き換えることができる必要があり@+id/image_source
ます。以下を使用して、Honeycomb +デバイスで成功しました:
mLayerDrawable.setDrawableByLayerId(R.id.image_source, drawable);
mLayerDrawable.invalidateSelf();
setDrawableByLayerId
ただし、Gingerbread デバイスでは不安定であるため、これは Gingerbread デバイスでは機能しません(リンク 1、リンク 2 )。ゼロから構築することをお勧めしLayerDrawable
ます。私はそれを始めましたが、現在intristicInset
、最初のレイヤーの設定の問題に直面しています。
使ってみた
mLayerDrawable.setLayerInset(0, dp14, dp6, dp14, dp6);
dpxx
自分で計算した定数はどこにありますか。ただし、この方法はジンジャーブレッドでも機能していないようです (リンク 1 )。
したがって、私は別の方法でそれを行うことにしました - 最初のレイヤーに設定したドローアブルの再角度の境界を設定します:
drawable.setBounds(dp14, dp6, dp90 - dp14, dp90 - dp6);
完璧ですが、LayerDrawable
レイヤーの境界設定は無視されているようです(リンク1)
ここで、2 つの画像ビューを組み合わせて使用することをお勧めします。ただし、私LayerDrawable
は一部でLevelListDrawable
あり、レイアウトを含めることはできないと思います。
LayerDrawable
全体として、ハニカム以前のデバイスでは、私のコンテンツを変更することはできません。どのように進めればよいかについてのアドバイスをいただければ幸いです。