修改具有相同ID的多个视图

时间:2017-04-10 09:13:48

标签: android android-layout

我有一个视图,其目的是绘制一条水平线(剖面分隔符)。

<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 / ViewHorizo​​ntalLine创建一个ids.xml,但我的代码只影响第一个View。有没有办法影响具有相同ID的多个视图?

如果没有,以编程方式以相同方式修改多个视图的最佳方法是什么?

2 个答案:

答案 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()