Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
#1

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

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

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

Sheets Tab= new Sheets ('Test'); Tab.addCol('id',int); Tab.addCol('Text',String); Tab.addVal('id',4); Java
Android Передача данных между tab Activities
Android Передача данных между tab Activities
Несколько Activity в одной вкладке TAB Android
tab - изменение внешнего вида Android
Android Установить иконку на tab
HTML, CSS Вложенный Tab в bootstrap
Tab Layout with Swipeable Views Android
Вложенный HorizontalScrollView в ScrollView с общим свайпом Android
Android Как в TabWidget убрать Tab indicator?
Android ViewPager и Tab
Android Tab снизу экрана

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
futurelink
1 / 1 / 0
Регистрация: 02.05.2012
Сообщений: 56
15.05.2012, 17:01     Tab вложенный в tab #2
табактивити кануло в лету. юзаем фрагментс апи для работы с табами. решение будет простое - таб навигация вверху в экшнбаре, внизу во фрагменте создаем свою кнопочную навигацию. нажатие нъ кнопку загружает фрагмент контента в android.R.id.content. образец как это делать, если надо скину.
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
16.05.2012, 18:13     Tab вложенный в tab #3
кидай мне интересно
futurelink
1 / 1 / 0
Регистрация: 02.05.2012
Сообщений: 56
17.05.2012, 05:20     Tab вложенный в tab #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 у себя в блоге, там об этом тоже есть.
Yandex
Объявления
17.05.2012, 05:20     Tab вложенный в tab
Ответ Создать тему
Опции темы

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