如何在外部类中设置ImageViews,以便修改它们将更改包含它们的所有视图?

时间:2011-07-08 02:51:53

标签: android android-layout

现在我有一个main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:myapp="http://schemas.android.com/apk/res/com.b" 
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/background_color"
    android:textColorPrimaryInverse="#E97C03"
    >
    <LinearLayout 
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/background_color"
        android:textColorPrimaryInverse="#E97C03"
        > 
    <ImageView
        android:id="@+id/header_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/logo"
        android:layout_gravity="left"
        android:background="@color/seperator_bg_color"
        />

        <ImageView
            android:id="@+id/build_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_camera"
            android:layout_gravity="left"

            />
        <ImageView
            android:id="@+id/saved_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_details"
            />
        <ImageView
            android:id="@+id/settings_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_menu_upload"
            />
    </LinearLayout>

    <TextView
        android:id="@+id/seperator_text"  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:padding="1dip"
        android:background="@color/seperator_bg_color"
        android:textColor="@color/seperator_text_color"
        android:textStyle="bold" 
        android:text="@string/header_build"
        android:textColorPrimaryInverse="#E97C03"
        />
<!--    <TextView  -->
<!--        android:id="@+id/selection" -->
<!--        android:layout_width="fill_parent" -->
<!--        android:layout_height="wrap_content" -->
<!--        />-->
    <ListView
        android:id="@android:id/list" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:drawSelectorOnTop="false" 
        android:textColorPrimaryInverse="#E97C03"
        />
</LinearLayout>

现在,当然,使用main.xml的所有东西都会在顶部有一个标题(第二个包含在水平的LinearLayout中。

但是在所有这些视图中,我都有header_image,saved_image,build_image等链接,这些链接将用户带到特定视图。问题是,如果我进行更改,我必须编辑每个具有这些链接的活动。

有没有办法可以创建一个只包含这样信息的外部类:

build =(ImageView)findViewById(R.id.build_image);
build.setOnClickListener(buildClick);

saved =(ImageView)findViewById(R.id.saved_image);
saved.setOnClickListener(savedClick);

prefs =(ImageView)findViewById(R.id.settings_image);
prefs.setOnClickListener(prefsClick);

而不是在每个Activity中都有代码?

编辑:基本上,我想重新使用我的main.xml作为所有活动的标题,但是我设置setOnClickListener我不想在每个活动中设置它们,因为如果我更改/添加到标题,我必须深入研究所有活动并改变它们。

所以我想把上面的代码放在一个单独的类中。这样,在一个活动中,我调用该类,它将为标题设置这些值。或者,如果可能的话,在XML中设置onClick设置。

1 个答案:

答案 0 :(得分:0)

我会创建一个包含应用程序范围功能的baseActivity。所有需要此功能的活动都只会扩展baseActivity。

此外,您可能希望从所有布局文件中提取该部分并放入包含布局。