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

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

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

Tab вложенный в tab - Программирование Android

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

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

ViewPager и Tab - Программирование Android
Здравствуйте. Есть приложение на андроид C# (файл проекта в приложении). Он нормально функционирует, но возникает проблема при...

Tab снизу экрана - Программирование Android
Хочу, чтобы таб находился снизу активити, какое значение для этого используется? (сверху, снизу, справо, слева) <item ...

Установить иконку на tab - Программирование Android
Скажите как в коде ниже устанавливать иконки на каждую вкладку и затем вызвать нужную активность? вот код: public class...

Tab Layout with Swipeable Views - Программирование Android
Делаю вкладки по этому примеру - http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/ Выдает ошибку в строке...

tab - изменение внешнего вида - Программирование Android
Могу ли я на место как на скриншоте, на весь размер где обозначено пунктиром белым, на каждую вкладку поставить своё изображение (т.е. 4...

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

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

Несколько Activity в одной вкладке TAB - Программирование Android
Как разместить несколько Activity в одной вкладке TAB?

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

Передача данных между tab Activities - Программирование Android
Возможно ли обмениваться данными между tab вкладками(Активностями иначе говоря), допустим в одной активности EditText, ввели туда...

Вложенный HorizontalScrollView в ScrollView с общим свайпом - Программирование Android
Есть вложенный HorizontalScrollView в ScrollView. В общем суть проблемы - если начать скролить по горизонтали, то двигая палец вверх/вниз...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.05.2012, 05:20
Ответ Создать тему
Опции темы

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