你好,我有很多的類像這樣的(超過8個XML佈局)和他們得到了相同的結構,這樣在relativelayout中重複項目,如何清理此方法?
這裏是從我的佈局文件夾中的category_architecture.xml的例子:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout_architecture"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dip"
android:background="@drawable/category_architecture_background">
<ImageView
android:id="@+id/imageView_architecture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_margin="5dp"
android:src="@mipmap/ic_architecture" />
<TextView
android:id="@+id/textView_architecture"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_alignBottom="@+id/imageView_architecture"
android:layout_alignTop="@+id/imageView_architecture"
android:layout_toRightOf="@+id/imageView_architecture"
android:gravity="center"
android:text="@string/architecture"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:textColor="@android:color/white" />
<ImageView
android:id="@+id/imageView_building"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView_architecture"
android:layout_toRightOf="@+id/switch_building"
android:src="@mipmap/ic_building" />
<TextView
android:id="@+id/textView_building"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView_building"
android:layout_alignParentRight="true"
android:layout_below="@+id/imageView_architecture"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@+id/imageView_building"
android:gravity="center_vertical|left"
android:text="@string/building"
android:textAlignment="viewStart"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@android:color/white" />
<android.support.v7.widget.SwitchCompat
android:id="@+id/switch_building"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_alignBottom="@+id/imageView_building"
android:layout_alignTop="@+id/imageView_building"
android:layout_toRightOf="@+id/imageView_architecture" />
<ImageView
android:id="@+id/imageView_bridge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView_building"
android:layout_toRightOf="@+id/switch_building"
android:src="@mipmap/ic_bridge" />
<TextView
android:id="@+id/textView_bridge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView_bridge"
android:layout_alignParentRight="true"
android:layout_alignLeft="@+id/textView_building"
android:layout_below="@+id/textView_building"
android:gravity="center_vertical|left"
android:text="@string/bridge"
android:textAlignment="viewStart"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@android:color/white" />
<android.support.v7.widget.SwitchCompat
android:id="@+id/switch_bridge"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_above="@+id/imageView_monument"
android:layout_below="@+id/textView_building"
android:layout_toRightOf="@+id/imageView_architecture" />
<ImageView
android:id="@+id/imageView_monument"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView_bridge"
android:layout_toRightOf="@+id/switch_building"
android:src="@mipmap/ic_monument" />
<TextView
android:id="@+id/textView_monument"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/imageView_airport"
android:layout_alignParentRight="true"
android:layout_alignLeft="@+id/textView_building"
android:layout_below="@+id/textView_bridge"
android:gravity="center_vertical|left"
android:text="@string/Monument"
android:textAlignment="viewStart"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@android:color/white" />
<android.support.v7.widget.SwitchCompat
android:id="@+id/switch_monument"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_alignBottom="@+id/imageView_monument"
android:layout_below="@+id/imageView_bridge"
android:layout_toRightOf="@+id/imageView_architecture" />
<android.support.v7.widget.SwitchCompat
android:id="@+id/switch_airport"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView_airport"
android:layout_below="@+id/switch_monument"
android:layout_toRightOf="@+id/imageView_architecture" />
<ImageView
android:id="@+id/imageView_airport"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView_monument"
android:layout_toRightOf="@+id/switch_building"
android:src="@mipmap/ic_airport" />
<TextView
android:id="@+id/textView_airport"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView_airport"
android:layout_alignParentRight="true"
android:layout_alignLeft="@+id/textView_building"
android:layout_below="@+id/textView_monument"
android:gravity="center_vertical|left"
android:text="@string/airport"
android:textAlignment="viewStart"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@android:color/white" />
<android.support.v7.widget.SwitchCompat
android:id="@+id/switch_park_attraction"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_alignBottom="@+id/imageView_park_attraction"
android:layout_below="@+id/switch_airport"
android:layout_toRightOf="@+id/imageView_architecture" />
<ImageView
android:id="@+id/imageView_park_attraction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView_airport"
android:layout_toRightOf="@+id/switch_building"
android:src="@mipmap/ic_amusement" />
<TextView
android:id="@+id/textView_park_attraction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView_park_attraction"
android:layout_alignParentRight="true"
android:layout_alignLeft="@+id/textView_building"
android:layout_alignTop="@+id/imageView_park_attraction"
android:gravity="center_vertical|left"
android:text="@string/amusment"
android:textAlignment="viewStart"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@android:color/white" />
<android.support.v7.widget.SwitchCompat
android:id="@+id/switch_infrastructure"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_alignBottom="@+id/imageView_infrastructure"
android:layout_below="@+id/switch_park_attraction"
android:layout_toRightOf="@+id/imageView_architecture" />
<ImageView
android:id="@+id/imageView_infrastructure"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView_park_attraction"
android:layout_toRightOf="@+id/switch_building"
android:src="@mipmap/ic_infrastructure" />
<TextView
android:id="@+id/textView_infrastructure"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView_infrastructure"
android:layout_alignParentRight="true"
android:layout_alignLeft="@+id/textView_building"
android:layout_below="@+id/textView_park_attraction"
android:gravity="center_vertical|left"
android:text="@string/infrastructure"
android:textAlignment="viewStart"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@android:color/white" />
</RelativeLayout>
,所以我有一些相對於該佈局的實現問題:
- 那是一個不錯的選擇爲p把這個變成一個相對的佈局?
- 有沒有辦法減少代碼冗餘?
- 我可以用一些listView嗎?
- 與LinearLayout相比,有什麼更好用?
- 你應該怎麼做這種事情?
佈局的實現是好的,所有的工作(開關聽衆,承受力改變對搜索查看時觸發線,appbar圖標按類別和搜索查看和appbar也顏色切換...
但我認爲有很多技巧可以避免得到如此多的重複代碼......做所有類別佈局的工作非常多,而且我希望確定在改變我的主要方法之前我在做什麼......(我不想要花幾個小時在沒有任何正確的結果周圍跳動...)
PS:我很抱歉在這裏乞討,但我想收集一些外部建議,以便噸o改善我的代碼,併爲我的未來工作學習,謝謝;)
瞭解更多關於[包括與合併(http://developer.android.com/training/improving-layouts/reusing-layouts.html) 。這就是說,如果你不想在列表中使用它們,但使用列表也可以起作用。 – torque203