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

Обсуждение уроков
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 09 май 2012, 23:00

В этом уроке:
- используем Activity в качестве содержимого вкладки
- используем TabActivity


Click here to read this article!
Последний раз редактировалось damager82 19 май 2017, 10:19, всего редактировалось 4 раза.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

kolipass
Сообщения: 50
Зарегистрирован: 16 апр 2012, 14:10

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

Сообщение kolipass » 10 май 2012, 14:04

Прошу помощи в верстке дизайна табов.
хочу вот так:
Изображение
на данный момент все вот так:
Изображение

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

         <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)Как текст заголовков табов сделать по центру.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 12 май 2012, 09:27

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

kolipass
Сообщения: 50
Зарегистрирован: 16 апр 2012, 14:10

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

Сообщение kolipass » 12 май 2012, 11:57

К сожалению там не так подробно, как нужно мне.

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

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 14 май 2012, 09:46

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

kolipass
Сообщения: 50
Зарегистрирован: 16 апр 2012, 14:10

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

Сообщение kolipass » 14 май 2012, 11:20

Только в xml-ке

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

<TabWidget

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

           android:layout_width="fill_parent"

           android:layout_height="wrap_content"            

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

          />

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 15 май 2012, 09:57

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

kolipass
Сообщения: 50
Зарегистрирован: 16 апр 2012, 14:10

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

Сообщение kolipass » 15 май 2012, 13:58

Большое спасибо. Это решило часть моих задач. Вот только как задать разные цвета на отображения в активно/не активно?

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 16 май 2012, 09:26

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

kolipass
Сообщения: 50
Зарегистрирован: 16 апр 2012, 14:10

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

Сообщение kolipass » 16 май 2012, 11:37

да. сейчас

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

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

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 17 май 2012, 12:38

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);
Все работает, открытая вкладка белая, закрытая - красная. Также делаете?
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

kolipass
Сообщения: 50
Зарегистрирован: 16 апр 2012, 14:10

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

Сообщение kolipass » 17 май 2012, 14:10

Заработало когда android:tileMode="repeat" убрал из
<item android:drawable="@drawable/tabselect" android:state_selected="true" android:tileMode="repeat" />
спасибо. осталось с паддингами доделать

karakum
Сообщения: 1
Зарегистрирован: 19 авг 2012, 11:53

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

Сообщение karakum » 19 авг 2012, 12:01

Как из активности во вкладке создать новую активность, но чтобы она была так же внутри вкладки, а не поверх?
Т.е. открываем новую активность, но табы так же присутствовать должны.
Спасибо.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 27 авг 2012, 13:42

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

var49
Сообщения: 24
Зарегистрирован: 25 авг 2012, 09:13

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

Сообщение var49 » 27 авг 2012, 18:20

Здравствуйте! Пытаюсь следовать Вашим урокам. Сделал макетик с 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);
}

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

var49
Сообщения: 24
Зарегистрирован: 25 авг 2012, 09:13

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

Сообщение var49 » 19 сен 2012, 11:47

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

clerik777
Сообщения: 12
Зарегистрирован: 08 окт 2012, 08:20

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

Сообщение clerik777 » 17 окт 2012, 04:24

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.

$01ny$hko
Сообщения: 44
Зарегистрирован: 18 окт 2012, 10:11

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

Сообщение $01ny$hko » 22 окт 2012, 10:49

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

public class MainActivity extends TabActivity

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

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

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

Сообщение AndreyI » 22 окт 2012, 11:49

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

$01ny$hko
Сообщения: 44
Зарегистрирован: 18 окт 2012, 10:11

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

Сообщение $01ny$hko » 22 окт 2012, 12:31

Спасибо!! Да всё действительно работает. А стоит ли его заменять если приложение будет рассчитано, в основном, на версии, начиная с 2.3.3 и выше?

Ответить