Я хотел бы нарисовать один из значков вкладок actionbarherlock. Чтобы сделать это, вместо установки значка вкладки я пытаюсь создать вид, который будет стилизован точно так же, как и другие вкладки ABS. Похоже, что abs4 добавляет вкладки в ScrollingTabContainerView. Класс TabView в ScrollingTabContainerView, кажется, отвечает за взятие значков и размещение их в центре вкладок, поэтому я смоделировал следующий код для этого кода, найденный в его методе update ().
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?