bullet_normal と bullet_active という 2 つのスタイルを作成しました。これらの箇条書きのインスタンスを ImageViews として LinearLayout に追加しています。このように XML に追加すると、すべて正常に動作します。
<LinearLayout android:id="@+id/bar_bullets"
android:layout_width="wrap_content" android:layout_height="@dimen/gsbar_height"
android:layout_centerVertical="true" android:layout_centerHorizontal="true"
android:layout_margin="0dp" android:padding="3dp">
<ImageView style="@style/bullet_normal"></ImageView>
<ImageView style="@style/bullet_active"></ImageView>
</LinearLayout>
しかし、これらをプログラムで LinearLayout に追加する機能が必要です。私はそれを次のようにしようとしています:
ImageView normal = new ImageView(this.getContext(), null, R.style.bullet_normal)
, active = new ImageView(this.getContext(), null, R.style.bullet_active);
bulletContainer.addView(active);
bulletContainer.addView(normal);
ただし、これは常に幅と高さが 0 の ImageView になります。両方のスタイルのコードは次のようになります。
<style name="bullet_normal">
<item name="android:layout_width">10dip</item>
<item name="android:layout_height">10dip</item>
<item name="android:src">@drawable/gsbar_bullet</item>
<item name="android:layout_margin">6dip</item>
<item name="android:background">#000000</item>
</style>
そして、ドローアブルは次のようになります。
<shape android:shape="oval" xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/gsbar_bullet" />
<stroke android:width="1dp" android:color="@color/gsbar_bullet_border" />
</shape>
bullet_normal と bullet_active のスタイルを変更する必要がありますか? それとも、ImageView を正しく構築していませんか?
前もって感謝します!