Android Market-подобная вкладка - PullRequest
0 голосов
/ 15 июля 2010

Как лучше всего реализовать панель вкладок, похожую на Android Market (Приложения / Игры / Загрузки)?

alt text

Было бы здорово, если бы я мог использовать TabHost, но ясчитаю, что это не позволяет этот уровень настройки.

Ответы [ 4 ]

2 голосов
/ 15 июля 2010

Как сказал Кристиан, определенно возможно использовать TabHost, и вам даже не нужно использовать код androidtabs, на который он ссылается.Начиная с уровня SDK 4 (т.е. Android 1.6) вы можете передать View в TabHost.TabSpec.setIndicator(), что позволит вам полностью контролировать внешний вид вкладок.

Однако, нажавлюбая из этих кнопок в Маркете открывает новое действие, и поэтому использование простых Button s может более точно отражать это поведение, чем TabHost.

В случае, если вам нужно поддерживать 1.5 какну, вы можете проверить zip-архив из этого поста .Он содержит TabHost и т. Д. Из Android 1.6.Копирование этого в ваш проект должно работать, даже на Android 1.5.После этого вам будет доступен setIndicator (View v).

1 голос
/ 15 июля 2010

Это можно сделать с помощью TabHost.Более того, вы можете найти полностью функциональный пример того, как это сделать здесь: http://code.google.com/p/androidtabs/

0 голосов
/ 22 ноября 2011

Вы можете сделать эту работу, изменив файл tab.xml. В tab.xml в линейном макете сначала используйте один дочерний макет, который содержит изображение и метку (рынок Android) Под этим дочерним макетом разместите вкладку хост и макет фрейма. Тогда вы сможете выполнить эту задачу.

0 голосов
/ 21 февраля 2011

Давайте попробуем этот код:

TabHost.TabSpec spec;  // Reusable TabSpec for each tab
TextView txtTabInfo; // Reusable tab indicator

// Create our tab indicator
txtTabInfo = new TextView(this);
txtTabInfo.setText("videos");
txtTabInfo.setTextSize(16);
txtTabInfo.setTypeface(Typeface.DEFAULT_BOLD);
txtTabInfo.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
txtTabInfo.setBackgroundResource(R.drawable.minitab);
txtTabInfo.setMinHeight(55);

spec = tabHostMM.newTabSpec("video");
spec.setContent(R.id.mm_video);
spec.setIndicator(txtTabInfo);
tabHostMM.addTab(spec);
...