2017-04-10 67 views
-3

我有一个视图,其目的是绘制一条水平线(节定界符)。修改具有相同ID的多个视图

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

我试图创建一个ids.xml如由Android工作室为我的@ ID建议/ ViewHorizo​​ntalLine但我的代码只影响第一个视图。有没有办法影响具有相同ID的多个视图?

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

+0

在同一个布局上具有相同ID的多个视图,认真吗? – AlexTa

+0

这个想法正在从web编程中复制'class'属性。我想过ID,但它可以是任何东西。 –

+0

因此,您必须在styles.xml文件上定义样式,然后在布局中为每个视图应用。 – AlexTa

回答

1

如果你想在Android网络造型的.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> 

然后,在你的布局风格尽可能多的观点,你想用相同的风格,但diferent标识:

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"/> 
0

有没有办法影响到使用相同ID

在一个布局使用了多个视图相同ID的多个视图失败的全部目的,但如果需要的话,你需要过在你的布局递归迭代和你想(即基于所有支票上view.getId()

相关问题