Я хотел бы нарисовать одну из значков вкладки 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?
Как вы, наконец, установить вид в 'ScrollingTabContainerView'? –