我有一个视图,其目的是绘制一条水平线(剖面分隔符)。
<View
android:id="@id/ViewHorizontalLine"
android:layout_width="fill_parent"
android:layout_height="2dip"
android:background="@color/ColorGrey" />
我的片段中有很多这些,并希望一次性以编程方式修改所有这些内容。我不想为每个人创建一个单独的id,因为我将对每个人进行相同的操作:
int margin = 4; // these are random pixel numbers
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mViewHorizontalLine.getLayoutParams();
params.topMargin = margin;
params.bottomMargin = margin;
params.height = 8;
我尝试按照Android Studio的建议为我的@ id / ViewHorizontalLine创建一个ids.xml,但我的代码只影响第一个View。有没有办法影响具有相同ID的多个视图?
如果没有,以编程方式以相同方式修改多个视图的最佳方法是什么?
答案 0 :(得分:1)
如果您想在Android中使用Web样式.class功能,则必须定义和样式。例如:
<强> RES / styles.xml 强>
<style name="ViewStyle">
<item name="android:layout_margin">16dp</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:background">#000</item>
</style>
然后,在您的布局样式中,您想要的样式具有相同的样式,但具有不同的ID:
<强> your_activity_layout.xml 强>
<View
android:id="@+id/ViewHorizontalLine1"
style="@style/ViewStyle"/>
<View
android:id="@+id/ViewHorizontalLine2"
style="@style/ViewStyle"/>
<View
android:id="@+id/ViewHorizontalLine3"
style="@style/ViewStyle"/>
答案 1 :(得分:0)
是否有办法影响具有相同ID的多个视图
在一个布局中为多个视图使用相同的ID会破坏整个目的,但如果需要,您还需要递归迭代布局并执行所需的所有检查(即基于view.getId()
。