我创建了两种样式,称为 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?
提前致谢!