如何将不同的布局对象彼此堆叠?

发布于 2024-12-02 17:40:03 字数 5278 浏览 0 评论 0原文

大家好,可能还有一些女孩,是否可以堆叠布局对象。那么一个对象位于另一个对象之上? 我的问题是这样的,我有一个 tabhost,在 tabhost 下我有一个带有文本视图的 tablerow。

我使 tabhost 选项卡不可见,但它隐藏了我的 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>

提前

致谢 safari

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

之后我的 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,选项卡主机应该隐藏(不可见),在这个隐藏的选项卡上应该是可见的表行。这样我就可以点击它进入我的其他班级。 我希望这对你们有帮助...

找到了解决方案 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>

Hello Guys and probably some Girls, is it possible to stack Layout Objects. So that one Object is over the other one?
My Problem is this, i've got a tabhost and under the tabhost i've got a tablerow with a textview in it.

I made the tabhost tabs invisible, but it hiddes my tablrow with the textview in it,how can i bring it infront?

Here is the 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>

Thx in Advance

Best Regards
safari

Some more information, for better understanding:

Afterwards my code of my Activity looks something like this:

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); }


    }

The linked class from my Tabhost looks for example like this:

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

So you see, i got a TabHost with one tab in it, which is filled from my ListActivity, the tabhost should be hidden (invisible), over this hidden tab should be the tablerow visible. So i can click it to get to my other class.
I hope this helps you guys...

FOUND A SOLUTION THX Egon

And here is the solution

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

2024-12-09 17:40:03

如果您想在 Z 轴上将一个 View 放置在另一个 View 的顶部,则可以使用 FrameLayout。它允许您将 View 放置在背景上,并将其他视图放置在其顶部。它确实功能强大且易于使用,所以您一定要尝试一下。希望这有帮助。

If you want to place one View at the top of the other in Z-axis, you can use FrameLayout. It lets you position a View on the background and other views on top of it. It's really powerful and easy to use, so you must give it a try. Hope this helps.

遗心遗梦遗幸福 2024-12-09 17:40:03

如果您使 Parentview 不可见,则其子视图也会自动变得不可见。在这种情况下,您必须为新选项卡定义其他布局。

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

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

If you make Parentview invisible then its childview also automatically make invisible. In this scenario you have to define other layout for your new tab.

If this is not correct, please make edit in, or suggest me. Thanx

EDIT: on your xml code I think tabhost is a parentview and tablerow , textview are childview of it.

会傲 2024-12-09 17:40:03

我相信问题在于您将 tabwidget 设置为alignParentBottom,然后将TableRow 设置为将tabwidget 对齐到顶部。因此它是不可见的。使选项卡小部件不可见确实会隐藏它,但占位符仍然存在。

I believe the problem is that you set the tabwidget to be alignParentBottom and then you set TableRow to have aligntop the tabwidget. Thus it is not visible. Making the tabwidget invisible does hide it, but the place holder is still there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文