2

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 を正しく構築していませんか?

前もって感謝します!

4

0 に答える 0