Страница 1 из 6

Урок 77. Tab - вкладки. TabActivity. Activity, как содержимое вкладки

Добавлено: 09 май 2012, 23:00
damager82
В этом уроке:
- используем Activity в качестве содержимого вкладки
- используем TabActivity


Click here to read this article!

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 10 май 2012, 14:04
kolipass
Прошу помощи в верстке дизайна табов.
хочу вот так:
Изображение
на данный момент все вот так:
Изображение

Код: Выделить всё

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

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

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/tabpic" >

            <TextView
                android:id="@+id/CountSelectedl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left|center"
                android:layout_marginLeft="15dp"
                android:text="@string/Selected_Count"
                android:textColor="#fafffc"
                android:textStyle="bold" />

            <Button
                android:id="@+id/buttontemp"
                android:layout_width="wrap_content"
                android:layout_height="48dp"
                android:layout_gravity="right|center"
                android:layout_marginRight="15dp"
                android:background="@android:color/transparent"
                android:clickable="true"
                android:text="Применить"
                android:textColor="#fafffc"
                android:textStyle="bold" />
        </FrameLayout>
tabpic.xml:

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/tabselect" android:state_selected="true" android:tileMode="repeat" />
    <!-- When not selected, use white -->
    <item android:drawable="@drawable/tabnonselect" />
</selector>
drawable/tabnonselec
Изображение
drawable/tabselect
Изображение

собственно вопрос:
1)Как в шапке табов сделать фон такой же, как в дизайне на первой картинке.
2)Как указать отступы между табами.
3)Как текст заголовков табов сделать по центру.

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 12 май 2012, 09:27
damager82
kolipass писал(а):Прошу помощи в верстке дизайна табов.
В прошлом уроке (76) я рассказывал, как самим можно tab рисовать. Я так понял, именно это вам и нужно?

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 12 май 2012, 11:57
kolipass
К сожалению там не так подробно, как нужно мне.

хотя бы как правильно натянуть фон для заголовка таба? он натягивается (в XML я это указал) но выглядит не пойми как.

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 14 май 2012, 09:46
damager82
kolipass писал(а):хотя бы как правильно натянуть фон для заголовка таба? он натягивается (в XML я это указал) но выглядит не пойми как.
Напишите здесь код, как вы используете tabpic.xml.

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 14 май 2012, 11:20
kolipass
Только в xml-ке

Код: Выделить всё

<TabWidget

           android:id="@android:id/tabs"

           android:layout_width="fill_parent"

           android:layout_height="wrap_content"            

           [b]android:background="@drawable/tabpic"[/b]

          />

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 15 май 2012, 09:57
damager82
kolipass писал(а):Только в xml-ке
Сделайте свой layout для заголовков, как в уроке 76. И там в корневом LinearLayout в качестве background укажите tabpic.xml.

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 15 май 2012, 13:58
kolipass
Большое спасибо. Это решило часть моих задач. Вот только как задать разные цвета на отображения в активно/не активно?

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 16 май 2012, 09:26
damager82
kolipass писал(а):Большое спасибо. Это решило часть моих задач. Вот только как задать разные цвета на отображения в активно/не активно?
В качестве background в LinearLayout сейчас указан tabpic.xml и не работает смена картинки при выделении табов?

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 16 май 2012, 11:37
kolipass
да. сейчас

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="48px"
    android:background="@drawable/tabpic" android:layout_margin="2dp">

    <TextView
        android:id="@+id/Landmark_caption"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/Landmark">
    </TextView>

</FrameLayout>

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 17 май 2012, 12:38
damager82
kolipass писал(а):

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="48px"
    android:background="@drawable/tabpic" android:layout_margin="2dp">

    <TextView
        android:id="@+id/Landmark_caption"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/Landmark">
    </TextView>

</FrameLayout>
Пишу ваш код в item.xml и добавляю вкладку:

Код: Выделить всё

TabSpec ts = th.newTabSpec("Tag1");
		ts.setIndicator(getLayoutInflater().inflate(R.layout.item, null));
        ts.setContent(R.id.tab1);
        th.addTab(ts);
Все работает, открытая вкладка белая, закрытая - красная. Также делаете?

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 17 май 2012, 14:10
kolipass
Заработало когда android:tileMode="repeat" убрал из
<item android:drawable="@drawable/tabselect" android:state_selected="true" android:tileMode="repeat" />
спасибо. осталось с паддингами доделать

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 19 авг 2012, 12:01
karakum
Как из активности во вкладке создать новую активность, но чтобы она была так же внутри вкладки, а не поверх?
Т.е. открываем новую активность, но табы так же присутствовать должны.
Спасибо.

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 27 авг 2012, 13:42
damager82
karakum писал(а):Как из активности во вкладке создать новую активность, но чтобы она была так же внутри вкладки, а не поверх?
Т.е. открываем новую активность, но табы так же присутствовать должны.
Спасибо.
Через ActivityGroup походу можно это реализовать.
Ссылки:
http://stackoverflow.com/questions/1306 ... in-android
http://united-coders.com/nico-heid/use- ... -activity/

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 27 авг 2012, 18:20
var49
Здравствуйте! Пытаюсь следовать Вашим урокам. Сделал макетик с 4-мя TAB - вкладками На каждой вкладке свой Activity. В каждом Aktivity свой List. Все, в общем, работает: отображается и переключается между вкладками. Но меня смущает, что при загрузке приложения и при переключениях между вкладками в LogCat выдаются такие строки (приведено начало):

08-27 15:00:34.469: E/Trace(643): error opening trace file: No such file or directory (2)
08-27 15:00:35.439: I/Choreographer(643): Skipped 125 frames! The application may be doing too much work on its main thread.
08-27 15:00:35.480: D/gralloc_goldfish(643): Emulator without GPU emulation detected.
08-27 15:00:35.730: I/Choreographer(643): Skipped 55 frames! The application may be doing too much work on its main thread.
08-27 15:00:41.120: I/Choreographer(643): Skipped 49 frames! The application may be doing too much work on its main thread.
08-27 15:00:41.250: I/Choreographer(643): Skipped 37 frames! The application may be doing too much work on its main thread.
08-27 15:00:42.562: I/Choreographer(643): Skipped 43 frames! The application may be doing too much work on its main thread.
08-27 15:00:49.834: I/Choreographer(643): Skipped 44 frames! The application may be doing too much work on its main thread.

Я так понял, что вложить файлы я не могу :(

Поэтому прилагаю только это:
public class MainActivity extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// получаем TabHost
TabHost tabHost = getTabHost();

// инициализация была выполнена в getTabHost
// метод setup вызывать не нужно

TabHost.TabSpec tabSpec;

tabSpec = tabHost.newTabSpec("tag1");
tabSpec.setIndicator("Accounts");
tabSpec.setContent(new Intent(this, Acc.class));
tabHost.addTab(tabSpec);

tabSpec = tabHost.newTabSpec("tag2");
tabSpec.setIndicator("Operations");
tabSpec.setContent(new Intent(this, Oper.class));
tabHost.addTab(tabSpec);

tabSpec = tabHost.newTabSpec("tag3");
tabSpec.setIndicator("Budgets");
tabSpec.setContent(new Intent(this, Bud.class));
tabHost.addTab(tabSpec);

tabSpec = tabHost.newTabSpec("tag4");
tabSpec.setIndicator("Reports");
tabSpec.setContent(new Intent(this, Rep.class));
tabHost.addTab(tabSpec);
}

Спасибо за ответ.

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 19 сен 2012, 11:47
var49
Все же. Как понимать сообщения: "Skipped 125 frames! The application may be doing too much work on its main thread."
Я уже привык видеть их достаточно часто и понял, что это - не ошибка. А что?

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 17 окт 2012, 04:24
clerik777
damager82 писал(а):
karakum писал(а):Как из активности во вкладке создать новую активность, но чтобы она была так же внутри вкладки, а не поверх?
Т.е. открываем новую активность, но табы так же присутствовать должны.
Спасибо.
Через ActivityGroup походу можно это реализовать.
Ссылки:
http://stackoverflow.com/questions/1306 ... in-android
http://united-coders.com/nico-heid/use- ... -activity/
ActivityGroup - устарел! Так пишут на developer.android.com! Говорят надо использовать Fragment или FragmentManager!!!!

Подробней об этом тут: http://developer.android.com/reference/ ... Group.html. Там увидите:

This class is deprecated.
Use the new Fragment and FragmentManager APIs instead; these are also available on older platforms through the Android compatibility package.

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 22 окт 2012, 10:49
$01ny$hko
Здравствуйте, всем! Подскажите, что не так сделала или может вообще забыла что-то сделать, но у меня в MainActivity.java
1). наследование от TabActivty перечёркнуто вот в этих сторчках:
import android.app.TabActivity;

public class MainActivity extends TabActivity

2). Вот с этой строкой что делать, её ведь быть не должно?
@SuppressWarnings("deprecation")

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 22 окт 2012, 11:49
AndreyI
Ничего страшного в этом нет это всего лишь предупреждение, что данный метод или класс является устаревшим и в будущем возможно не будет поддерживаться, в документации могут быть, также, прописаны рекомендации чем можно его заменить. Но это не ошибка и код работать будет. Если построить проект с более старыми версиями Android API, то это предупреждение не будет выдаваться вовсе.

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Добавлено: 22 окт 2012, 12:31
$01ny$hko
Спасибо!! Да всё действительно работает. А стоит ли его заменять если приложение будет рассчитано, в основном, на версии, начиная с 2.3.3 и выше?