Как лучше всего реализовать панель вкладок, подобную Android Market (приложения/игры/загрузки)?
Было бы здорово, если бы я мог использовать TabHost, но я считаю, что он не позволяет такой уровень настройки.
Как лучше всего реализовать панель вкладок, подобную Android Market (приложения/игры/загрузки)?
Было бы здорово, если бы я мог использовать TabHost, но я считаю, что он не позволяет такой уровень настройки.
Как сказал Кристиан, определенно возможно использовать TabHost
, и вам даже не нужно использовать код androidtabs, на который он ссылается. Начиная с SDK уровня 4 (т.е. Android 1.6) вы можете передать View
в TabHost.TabSpec.setIndicator()
, что позволит вам полностью контролировать внешний вид вкладок.
Однако нажатие любой из этих кнопок в Маркете открывает новое действие, и поэтому использование простых Button
может более точно отражать это поведение, чем TabHost.
Если вам также нужна поддержка 1.5, вы можете загрузить zip-архив из этот пост. Он содержит TabHost и т. д. из Android 1.6. Копирование этого в ваш проект должно работать даже на Android 1.5. После этого вам будет доступен setIndicator(View v).
Это можно сделать с помощью TabHost
. Более того, вы можете найти полнофункциональный пример того, как это сделать, здесь: http://code.google.com/p/androidtabs/
Давайте попробуем этот код:
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);
Вы можете выполнить эту работу, изменив файл tab.xml
. В tab.xml
в линейном макете сначала используйте один дочерний макет, который содержит изображение и метку (рынок Android). Под этим дочерним макетом поместите узел вкладки и макет кадра. Тогда вы сможете выполнить эту задачу.