如何访问tabhost中的视图?

时间:2013-04-03 10:15:33

标签: android android-layout android-tabhost

无法访问tabhost中的视图。 我想访问myTitle布局以及myTitleText并以编程方式更改其属性。

尝试使用findviewbyid和view.findviewbyid但是获取null。 试过充气机,但属性保持不变。

请帮忙

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/layout_myTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center">

        <TextView
            android:id="@+id/title_myTitleText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TITLE" />
    </LinearLayout>

    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="0dip" android:layout_weight="1.0"/>
</LinearLayout>

</TabHost>

2 个答案:

答案 0 :(得分:0)

对于那些正在搜索如何访问TabHost内部视图的答案的人,请执行以下操作。

让你有一个像:

的XML
<LinearLayout ...

    <TabHost
        android:id="@+id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
            </TabWidget>

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <LinearLayout
                    android:id="@+id/tab1"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">

                    <!-- Text 1 -->
                    <TextView 
                        android:id="@+id/text1"
                        android:text="Some text 1"/>
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/tab2"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">

                    <!-- Text 2 -->
                    <TextView 
                        android:id="@+id/text2"
                        android:text="Some text 2"/>
                </LinearLayout>
            </FrameLayout>
        </LinearLayout>
    </TabHost>
</LinearLayout>

如果要访问text2,首先应该访问容器(tab2)。

tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
    public void onTabChanged(String tabId) {
        Log.i(TAG, "tabId = " + tabId);

        if (tabId.equals("tab2")) {
            LinearLayout layout = (LinearLayout) findViewById(R.id.tab2);
            TextView text = (TextView) layout.findViewById(R.id.text2);
        }
    }
});

答案 1 :(得分:-1)

使用tabHost

完成
TextView tv = (TextView) tabHost.findViewById(R.id.title_myTitleText);