2012-02-10 3 views
1

Я хотел бы нарисовать одну из значков вкладки actionbarsherlock. Чтобы сделать это, вместо установки значка вкладки, я пытаюсь создать представление, которое будет выглядеть точно так же, как и другие вкладки АБС. Похоже, что abs4 добавляет вкладки в ScrollingTabContainerView. Класс TabView в ScrollingTabContainerView, по-видимому, несет ответственность за то, что вы выбрали значки и разместили их в центре вкладок, поэтому я смоделировал следующий код этого кода, найденный в его методе update().Настройка пользовательского представления вкладок ActionBar Sherlock

Drawable icon = getResources().getDrawable(resid); 
LinearLayout ll = new LinearLayout(this, null, android.R.attr.actionBarTabStyle); 
ImageView iconView = new ImageView(this); 
ActionBar.LayoutParams lp = new ActionBar.LayoutParams(LayoutParams.WRAP_CONTENT, 
                LayoutParams.WRAP_CONTENT); 
lp.gravity = Gravity.CENTER_VERTICAL; 
iconView.setLayoutParams(lp); 
ll.addView(iconView, 0); 
iconView.setImageDrawable(icon); 

Затем я вызываю setCustomView() с ll на вкладке. Когда я хочу писать по вкладке, я могу сделать это, извлекая представление из вкладки с помощью getCustomView.

Если я не указал создание LinearLayout выше с помощью android.R.attr.actionBarTabStyle, он работает, но значок не выложен в центре вкладки. Если я устанавливаю атрибуты с этим идентификатором, мое приложение падает при запуске с помощью NoSuchMethodError из android.widget.LinearLayout.

Каков правильный способ установки стиля с использованием атрибута android?

+0

Как вы, наконец, установить вид в 'ScrollingTabContainerView'? –

ответ

2

3-arg LinearLayout конструктор был добавлен только в API 11.

Библиотека использует Inflater макет системы, чтобы обойти это, задав стиль по умолчанию в XML. Вы можете сделать то же самое:

<LinearLayout style="?attr/actionBarTabStyle" /> 

, а затем просто:

LineraLayout tabView = LayoutInflater.from(context).inflate(R.layout.my_tab, null); 
//set your layout params and setCustomView 
+0

Когда мы используем 'setCustomView', он добавляет элемент в' ActionBarView'. Но как добавить элемент внутри 'ScrollingTapContainerView'. Планирование добавления другого вида вместо вкладок. Просто нужен второй слой на телефонах в портретном режиме. Это плохая идея? - вот снимок момента. –

+0

@ Джейк Уортон Можете ли вы, пожалуйста, помочь мне с этим? http://stackoverflow.com/questions/28711930/tabview-using-actionbarsherlock-library – Nevaeh

Смежные вопросы