选项卡活动中的自定义标题栏上的findViewById

时间:2011-10-14 13:11:39

标签: java android android-tabhost tabactivity

我在TabActivity上设置了自定义标题栏。自定义标题栏包含TextView和ImageView。 tabHost有多个标签。

我想要做的是访问选项卡中的ImageView资源。

我从主Tab项活动(扩展TabActivity)中的自定义标题栏访问TextView,它运行正常。以下是在主要活动中正常运行的代码:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.myactivity);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mycustomtitle);
TextView tv = (TextView) findViewById(R.id.viewTitleId);

现在我想在我的标签中访问ImageView(在tabHost中添加)。如果我在选项卡中设置以下代码:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

它出现以下错误:

You cannot combine custom titles with other title features

如果我直接在标签代码中设置以下内容:

getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mycustomtitle);
ImageView image = (ImageView) findViewById(R.id.imageTitleId);

图片保持为空。

mycustomtitle.xml有以下两个元素:

<TextView 
     android:layout_width="0dp"
     android:layout_height="wrap_content" 
     android:layout_weight="0.80"
     android:id="@+id/viewTitleId"
     android:textColor="@color/titleBarTextColor"
     android:gravity="center_vertical"
     android:text="@string/viewText"
     android:textSize="18px"
     android:paddingLeft="45px"
     />

<ImageView 
    android:layout_height="wrap_content" 
    android:layout_width="0dp" 
            android:layout_weight="0.20"
    android:src="@drawable/btn_save" 
    android:id="@+id/imageTitleId"
    >
</ImageView>

请告诉我如何在选项卡中访问自定义标题的ImageView?

3 个答案:

答案 0 :(得分:4)

您可以在TextView中声明ImageViewpublic staticTabActivity访问Sub-ActivityMain_Tab_Activity.textView.setText("my_text_view"); 。然后,在{{1}}中,您显然可以访问公共静态TextView和ImageView,

{{1}}

答案 1 :(得分:2)

如果您只在主TabActivity中放置自定义标题栏,则标题栏将出现在您的所有子标签中。

例如,如果您在Main TabActivity中指定了自定义标题栏:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main_layout);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.header_layout);
TextView tv = (TextView) findViewById(R.id.viewTitleId);
ImageView image = (ImageView)findViewById(R.id.imageTitleId);

没有必要给你所有的子标签活动。

在所有子标签活动中,您只需设置setContentView(R.layout.sub_layout);

答案 2 :(得分:1)

使用

getParent().getWindow().findViewById(id)

而不是findViewById(id); 用于访问父母的任何视图。