2017-04-10 44 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()

相關問題