Я реализую Tabbed Layout в приложении, где недвижимость с вертикальным экраном имеет первостепенное значение, поэтому я изменил высоту вкладок в XML-макете. На вкладках нет ресурса, который можно загрузить с помощью значков, у них есть основные текстовые метки. Я использую метод setIndicator(CharSequence)
при настройке TabSpec программно, но, похоже, даже при использовании этого метода ОС Android резервирует верхнюю часть вкладки для значка, а также изменяет размеры вкладок снизу вверх. В результате мои вкладки настолько коротки, что текстовая метка на вкладке не видна.
Из того, что я собрал в своем Googling, а также из других вопросов, лучший способ решить эту проблему - использовать TextView вместо CharSequence для индикатора. Итак, я попытался программно объявить новый TextView, а затем передать его методу setIndicator. Текстовая метка теперь видна, но на вкладке нет абсолютно никаких визуальных стилей/состояний, которые когда-либо были. Кроме того, если эта вкладка активна, сам текст больше не отображается из-за отсутствия доступных ресурсов. Это, очевидно, также проблема.
Я хотел бы опубликовать код, который я использую, но характер проекта не позволяет мне использовать какой-либо источник. Однако я могу сказать следующее:
LayoutParams(int, int)
и setBackgroundColor
и многих других свойств. Я попытался использовать полностью прозрачные значения для backgroundColor. Нет.И поэтому мой вопрос следующий:
Есть ли способ получить короткие вкладки, которые имеют только текстовую метку, без необходимости проходить процесс расширения классов или создания наборов доступных ресурсов для выделения ресурсов? Хотя это, в основном, простые задачи, характер этого приложения заключается в том, что он находится на очень коротком обороте времени, а представление/пользовательский хром имеет наивысшую важность; в настоящее время функциональность является приоритетом номер один, и если я смогу сэкономить время, используя предоставленные элементы пользовательского интерфейса, то это маршрут, который я бы предпочел принять, поскольку у меня нет действительно возможности загружать кучу графического программного обеспечения для редактирования на моей рабочей станции без головных болей и я также единственный, кто работает над проектом, далее, единственный здесь, которому разрешено работать над проектом. Приношу свои извинения за туманность всего этого дела.
Спасибо заранее.
Я отсылаю вас к моему ответу в этом question.
Я использую этот код для установки индикатора
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;
intent = new Intent().setClass(this, activity1.class);
spec = tabHost.newTabSpec("tab1").setIndicator("tab1").setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, activity2.class);
spec = tabHost.newTabSpec("tab2").setIndicator("tab2").setContent(intent);
tabHost.addTab(spec);
...
// set height of tabs
tabHost.getTabWidget().getChildAt(0).getLayoutParams().height = 30; // where child 0 refers "tab1"
tabHost.getTabWidget().getChildAt(1).getLayoutParams().height = 30; // where child 1 refers "tab2"
Надеюсь, что это поможет.