Навигация по ActionBarSherlock со значком и заголовком

Я разрабатываю приложение, где навигация выполняется с помощью счетчика на панели действий. Элементы Spinner, необходимые для включения значков, поэтому я создал собственные макеты для этого. Проблема заключается в том, что счетчик слишком широк по отношению к его элементам. Я использую ActionBarSherlock. Коды, которые я написал до сих пор:

navigation_list_item.xml:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="center_vertical" android:orientation="horizontal"> <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="match_parent" android:adjustViewBounds="true" android:padding="4dip"/> <TextView android:id="@+id/title" style="?attr/spinnerItemStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="marquee" android:singleLine="true" android:layout_gravity="center_vertical"/> </LinearLayout> 

navigation_list_dropdown_item.xml:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:orientation="horizontal" > <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="?attr/dropdownListPreferredItemHeight" android:adjustViewBounds="true" android:padding="4dip"/> <TextView android:id="@+id/title" style="?attr/spinnerDropDownItemStyle" android:layout_width="match_parent" android:layout_height="?attr/dropdownListPreferredItemHeight" android:ellipsize="marquee" android:singleLine="true" /> </LinearLayout> 

NavigationListAdapter.java:

 public class NavigationListAdapter extends BaseAdapter{ private Drawable[] mIcons; private String[] mTitles; private Context mContext; private LayoutInflater mInflator; public NavigationListAdapter(Context context, Drawable[] icons, String[] titles){ mContext = context; mInflator = (LayoutInflater)mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE); mIcons = icons; mTitles = titles; } @Override public int getCount() { return mTitles.length; } @Override public Object getItem(int position) { return mTitles[position]; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if(convertView == null){ convertView = mInflator.inflate(R.layout.navigation_list_item, parent, false); holder = new ViewHolder(); holder.icon = (ImageView)convertView.findViewById(R.id.icon); holder.title = (TextView)convertView.findViewById(R.id.title); convertView.setTag(holder); }else{ holder = (ViewHolder)convertView.getTag(); } holder.title.setText(mTitles[position]); holder.icon.setImageDrawable(mIcons[position]); return convertView; } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if(convertView == null){ convertView = mInflator.inflate(R.layout.navigation_list_dropdown_item, parent, false); holder = new ViewHolder(); holder.icon = (ImageView)convertView.findViewById(R.id.icon); holder.title = (TextView)convertView.findViewById(R.id.title); convertView.setTag(holder); }else{ holder = (ViewHolder)convertView.getTag(); } holder.title.setText(mTitles[position]); holder.icon.setImageDrawable(mIcons[position]); return convertView; } private class ViewHolder{ public ImageView icon; public TextView title; } } 

OnCreate метод деятельности:

  @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Context context = getSupportActionBar().getThemedContext(); TypedArray ta = getResources().obtainTypedArray(R.array.leagues); Drawable[] logos = new Drawable[ta.length()]; for(int i = 0; i < logos.length; i++){ logos[i] = ta.getDrawable(i); } NavigationListAdapter adapter = new NavigationListAdapter(context, logos, getResources().getStringArray(R.array.league_names)); getSupportActionBar().setDisplayShowTitleEnabled(false); getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); getSupportActionBar().setListNavigationCallbacks(adapter, null); } 

Иллюстрация проблемы: Введите описание изображения здесь

Solutions Collecting From Web of "Навигация по ActionBarSherlock со значком и заголовком"