Почему этот TextView отображается на обеих моих вкладках?Должно быть только на первом - PullRequest
0 голосов
/ 13 октября 2011

У меня есть TextView, который должен отображаться только на первом TabPage (который содержит ScrollView), но по какой-то причине он отображается на обоих моих TabPages, тогда как только TableLayoutотображается в первой вкладке, как и должно быть.Я понятия не имею, почему ... вот мой XML-файл: рассматриваемый TextView - это «primaryInfo» в ScrollView.

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

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

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

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

            <ScrollView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:id="@+id/scrollView">

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

                    <TextView
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:text="Primary Info"
                        android:layout_marginTop="15dp"
                        android:layout_marginBottom="15dp"
                        android:gravity="center_horizontal"
                        android:id="@+id/piTextView"
                        android:background="#595959"/>

                    <TableLayout
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/specsTab"
                        android:layout_centerHorizontal="true"/>

                </LinearLayout>
            </ScrollView>

            <RelativeLayout
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent"
                android:orientation="vertical"
                android:id="@+id/photosTab">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_above="@+id/thumbnailGallery"
                    android:id="@+id/selectedPhoto"/>

                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/imageProgressLayout"
                    android:layout_alignParentBottom="true"
                    android:orientation="horizontal">

                    <ProgressBar
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        style="@android:style/Widget.ProgressBar.Small"
                        android:indeterminate="true"
                        android:layout_marginTop="5dp"
                        android_layout_marginLeft="20dp"
                        android_layout_marginBottom="20dp"
                        android:id="@+id/galleryProgress"/>

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="fill_parent"
                        android:id="@+id/loadingTextView"
                        android:text="Loading images..."
                        android:layout_marginLeft="5dp"
                        android:layout_centerVertical="true"
                        android:textSize="13sp"/>           
                </LinearLayout>

                <Gallery
                    android:id="@+id/thumbnailGallery"
                    android:layout_above="@+id/galleryProgress"
                    android:layout_width="fill_parent"
                    android:layout_alignParentBottom="true"
                    android:layout_marginBottom="10dp"
                    android:layout_height="wrap_content"/>

            </RelativeLayout>
        </FrameLayout>  
    </LinearLayout>
</TabHost>

edit

Код настройки вкладки:

    public void tabSetup()
{
    TabHost tabHost=(TabHost)findViewById(R.id.tabHost);
    tabHost.setup();

    TextView tv1 = new TextView(this);
    tv1.setText("Specs");
    tv1.setHeight(50);

    TextView tv2 = new TextView(this);
    tv2.setText("Photos");
    tv2.setHeight(50);

    TabSpec spec1=tabHost.newTabSpec("Specs");
    spec1.setContent(R.id.specsTab);
    spec1.setIndicator("Specs");

    TabSpec spec2=tabHost.newTabSpec("Photos");
    spec2.setIndicator("Photos");
    spec2.setContent(R.id.photosTab);

    tabHost.addTab(spec1);
    tabHost.addTab(spec2);
}

1 Ответ

0 голосов
/ 13 октября 2011

Что ж, проблема заключалась в том, что, когда я изменил макет, я забыл изменить представление, которое я передал в метод setContent, поскольку изменился вид верхнего уровня для этой вкладки. Вот что было до того, как я сменил макет (и он работал изначально):

TabSpec spec1=tabHost.newTabSpec("Specs");
spec1.setContent(R.id.specsTab);
spec1.setIndicator("Specs");

и это то, что нужно для текущего макета, который я разместил выше:

TabSpec spec1=tabHost.newTabSpec("Specs");
spec1.setContent(R.id.scrollView);
spec1.setIndicator("Specs");

Проблема решена. Благодарю Джека за то, что он дал мне возможность опубликовать код, поскольку именно тогда я, наконец, заметил его;)

...