Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
1

Tab вложенный в tab

10.05.2012, 11:53. Просмотров 1365. Ответов 3
Метки нет (Все метки)

Доброго времени суток,
Натнулся на такую проблемку (и не наткнулся на её решение в интернете), есть потребность вложить TabActivity как элемент другую TabActivity, то есть чтобы по нажатию на элемент первой активити вываливался список вкладок второй, причём вываливался строго под вкладками первой.
Никто не придумывал красивого решения для таких вещей? Может существует готовое решение для расширения нажатых элементов?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2012, 11:53
Ответы с готовыми решениями:

ViewPager и Tab
Здравствуйте. Есть приложение на андроид C# (файл проекта в приложении). Он...

Установить иконку на tab
Скажите как в коде ниже устанавливать иконки на каждую вкладку и затем вызвать...

Tab снизу экрана
Хочу, чтобы таб находился снизу активити, какое значение для этого...

Tab Layout with Swipeable Views
Делаю вкладки по этому примеру -...

tab - изменение внешнего вида
Могу ли я на место как на скриншоте, на весь размер где обозначено пунктиром...

3
futurelink
1 / 1 / 0
Регистрация: 02.05.2012
Сообщений: 56
15.05.2012, 17:01 2
табактивити кануло в лету. юзаем фрагментс апи для работы с табами. решение будет простое - таб навигация вверху в экшнбаре, внизу во фрагменте создаем свою кнопочную навигацию. нажатие нъ кнопку загружает фрагмент контента в android.R.id.content. образец как это делать, если надо скину.
0
flashok
87 / 89 / 1
Регистрация: 14.02.2009
Сообщений: 293
16.05.2012, 18:13 3
кидай мне интересно
0
futurelink
1 / 1 / 0
Регистрация: 02.05.2012
Сообщений: 56
17.05.2012, 05:20 4
Вот основное активити, в нем описываем таб-листенер, и добавляем табы в экшнбар:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
public class MainActivity extends Activity {   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
               
        ActionBar bar = getActionBar();
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        bar.setDisplayShowTitleEnabled(false);       
        bar.addTab(bar.newTab()
            .setText(R.string.payments)
            .setTabListener(new TabListener<PaymentsFragment>(this, "payments", PaymentsFragment.class)));
        bar.addTab(
            bar.newTab()
            .setText(R.string.balance)
            .setTabListener(new TabListener<BalanceFragment>(this, "balance", BalanceFragment.class)));         
        bar.addTab(
                bar.newTab()
                .setText(R.string.planning)
                .setTabListener(new TabListener<PlanningFragment>(this, "planning", PlanningFragment.class)));          
 
    }
 
    public static class TabListener<T extends Fragment> implements ActionBar.TabListener {
        private Fragment mFragment;
        private final Activity mActivity;
        private final String mTag;
        private final Class<T> mClass;
 
        /** Constructor used each time a new tab is created.
          * @param activity  The host Activity, used to instantiate the fragment
          * @param tag  The identifier tag for the fragment
          * @param clz  The fragment's Class, used to instantiate the fragment
          */
        public TabListener(Activity activity, String tag, Class<T> clz) {
            mActivity = activity;
            mTag = tag;
            mClass = clz;
        }
 
        public void onTabSelected(Tab tab, FragmentTransaction ft) {
                if (mFragment == null) {
                mFragment = Fragment.instantiate(mActivity, mClass.getName());
                ft.add(android.R.id.content, mFragment, mTag);                
            } else {
                ft.attach(mFragment);
            }
        }
 
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
            if (mFragment != null) {
                ft.detach(mFragment);
            }
        }
 
        public void onTabReselected(Tab tab, FragmentTransaction ft) {}
    }
}
Фрагменты будут загружаться в рабочую область проги. Внутри фрагмента делаем следующую разметку (balance_view.xml):

XML
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8" ?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal">
<LinearLayout android:layout_width="240dp" android:layout_height="match_parent" android:orientation="horizontal">
<!-- Тут кнопочки размещаем -->
</LinearLayout>
 
<FrameLayout android:id="@+id/fragmentView" android:layout_width="fill_parent" android:layout_height="match_parent" /> 
</LinearLayout>
Вот код фрагмента первого уровня:

Java
1
2
3
4
5
6
7
8
9
10
11
12
public class BalanceFragment extends Fragment {
    public static BalanceFragment newInstance(int index) {
        BalanceFragment f = new BalanceFragment();
        return f;
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.balance_view, container, false);
    }
}
В нем - на кнопочки вешаем листенеры, которые будут делать:

Java
1
2
3
4
5
6
7
8
9
10
FragmentTransaction transaction = getFragmentManager().beginTransaction();
Fragment newFragment = new BalanceDetailsFragment(); // или какой-то там другой фрагмент
 
// Заменим фрагмент в нашем фрейме, и добавим состояние в бэкстэк если надо.
transaction.replace(R.id.fragmentView, newFragment);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
//transaction.addToBackStack(null);
 
// Применим изменения
transaction.commit();
Вот и все

Если что, я коллекционирую кое-какие tips&tricks у себя в блоге, там об этом тоже есть.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2012, 05:20

Как в TabWidget убрать Tab indicator?
Можно ли его выключить, или хотя бы сделать прозрачного цвета?

Передача данных между tab Activities
как обмениваться данными между tab - вкладками, если учесть, что tab вкладки не...

Передача данных между tab Activities
Возможно ли обмениваться данными между tab вкладками(Активностями иначе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru