Как складывать разные макеты объектов друг над другом? - PullRequest
0 голосов
/ 01 сентября 2011

Здравствуйте, ребята и, возможно, некоторые девушки, возможно ли складывать объекты макета.Так что один объект находится над другим?Моя проблема в том, что у меня есть вкладка, и под вкладкой у меня есть таблица с текстовым представлением.

Я сделал вкладки вкладки невидимыми, но она скрывает мой вкладки с представлением текста в немКак я могу довести это до конца?

Вот 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>

Заранее спасибо

С наилучшими пожеланиями сафари

Дополнительная информация, для лучшего понимания:

После этого мой код моей Деятельности выглядит примерно так:

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>

Ответы [ 3 ]

2 голосов
/ 01 сентября 2011

Если вы хотите поместить один View поверх другого по оси Z, вы можете использовать FrameLayout. Это позволяет вам позиционировать View на фоне и другие виды поверх него. Это действительно мощный и простой в использовании, так что вы должны попробовать. Надеюсь, это поможет.

1 голос
/ 01 сентября 2011

Если вы сделаете Parentview невидимым, тогда его childview также автоматически сделает невидимым.В этом сценарии вы должны определить другой макет для новой вкладки.

Если это не так, внесите изменения или предложите мне.Спасибо

РЕДАКТИРОВАТЬ: в вашем XML-коде я думаю, что tabhost - это родительское представление и tablerow, а textview - дочернее представление.

0 голосов
/ 01 сентября 2011

Я полагаю, что проблема в том, что вы устанавливаете tabwidget равным alignParentBottom, а затем вы устанавливаете TableRow на aligntop tabwidget.Таким образом, это не видно.Если сделать вкладку невидимым, она скрыта, но заполнитель все еще там.

...