2

我创建了两种样式,称为 bullet_normal 和 bullet_active。我将这些项目符号的实例作为 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);

但这总是会导致 ImageViews 的宽度和高度等于 0。两种样式的代码都与此类似:

   <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>

并且drawables看起来像:

<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 样式,还是我错误地构建了 ImageViews?

提前致谢!

4

0 回答 0