0

大家好,可能还有一些女孩,是否可以堆叠布局对象。所以一个对象在另一个对象之上?我的问题是这个,我有一个tabhost,在tabhost 下我有一个tablerow,里面有一个textview。

我使 tabhost 选项卡不可见,但它用 textview 隐藏了我的 tablrow,我怎样才能把它放在前面?

这是 Layout.xml

<?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"
        android:weightSum="1">
    <RelativeLayout
       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       >
       <FrameLayout
           android:id="@android:id/tabcontent"
           android:layout_width="fill_parent"
           android:layout_height="fill_parent"
           android:layout_weight="1" />
       <TabWidget
           android:id="@android:id/tabs"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:layout_alignBottom = "@android:id/tabcontent" 
           android:visibility="invisible"/>

       <TableRow 
            android:id="@+id/ADFilterOverview" 
            android:layout_height="wrap_content" 
            android:onClick="onClickADConfig" 
            android:layout_alignParentBottom="true" 
            android:layout_alignParentLeft="true" 
            android:layout_alignTop="@android:id/tabs" 
            android:layout_width="match_parent">

           <TextView 
                android:text="@string/newadfilter" 
                style="@style/NormalFont" 
                android:layout_gravity="bottom|left">
           </TextView>
       </TableRow>
    </RelativeLayout>
</TabHost>

提前谢谢

最好的问候野生动物园

更多信息,以便更好地理解:

之后我的 Activity 代码如下所示:

package de.retowaelchli.filterit;

    import android.app.TabActivity;
    import android.os.Bundle;
    import android.widget.TabHost;
    import android.content.Intent;

    public class StatsActivity extends TabActivity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.stats);
            TabHost tabHost = getTabHost();       

            tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("whatever").setContent(new Intent(this, SFilterStatsActivity.class)));
            tabHost.setCurrentTab(1);

        }

    /** Verweise auf die anderen Seiten **/
public void onClickADConfig(View view){
    final Intent i = new Intent(this, ADFilterConfigActivity.class);
    startActivity(i); }


    }

我的 Tabhost 中的链接类看起来像这样:

    package de.retowaelchli.filterit;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;


public class ADFilterStatsActivity extends ListActivity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mListContent));   
    }  

    private static String[] mListContent={"Item 1", "Item 2", "Item 3","Item 1", "Item 2", "Item 3","Item 1", "Item 2", "Item 3","Item 1", "Item 2", "Item 3"};
} 

所以你看,我有一个 TabHost,里面有一个选项卡,它是从我的 ListActivity 填充的,tabhost 应该被隐藏(不可见),在这个隐藏的选项卡上应该是可见的 tablerow。所以我可以点击它进入我的其他班级。我希望这对你们有帮助...

找到解决方案 THX Egon

这是解决方案

   <?xml version="1.0" encoding="utf-8"?>


<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabcontent"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
     >



       <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">

    <RelativeLayout
       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent">
       <FrameLayout
           android:id="@android:id/tabcontent"
           android:layout_width="fill_parent"
           android:layout_height="fill_parent"
           android:layout_weight="1" />
       <TabWidget
           android:id="@android:id/tabs"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:layout_alignBottom = "@android:id/tabcontent" 
           android:visibility="invisible"/>
       <TableRow android:layout_height="wrap_content" android:id="@+id/ADFilterOverview" android:layout_width="match_parent" android:onClick="onClickADConfig" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true">
           <TextView android:layout_gravity="bottom|left" android:text="@string/newadfilter" style="@style/NormalFont"></TextView>
       </TableRow>
       </RelativeLayout>
      </TabHost>


  </FrameLayout>
4

3 回答 3

2

如果你想View在 Z 轴上将一个放在另一个的顶部,你可以使用FrameLayout. 它使您可以将 aView放置在背景上,并将其他视图放置在其顶部。它非常强大且易于使用,因此您必须尝试一下。希望这可以帮助。

于 2011-09-01T13:13:10.093 回答
1

如果你让 Parentview 不可见,那么它的 childview 也会自动变得不可见。在这种情况下,您必须为新选项卡定义其他布局。

如果这不正确,请进行编辑或建议我。谢谢

编辑:在您的 xml 代码中,我认为 tabhost 是 parentview 和 tablerow , textview 是它的子视图。

于 2011-09-01T13:35:22.810 回答
0

我相信问题在于您将 tabwidget 设置为 alignParentBottom,然后将 TableRow 设置为 aligntop tabwidget。因此它是不可见的。使 tabwidget 不可见确实会隐藏它,但占位符仍然存在。

于 2011-09-01T13:11:49.900 回答