ActionBarSherlock lista de navegación con el icono y el título

Estoy desarrollando una aplicación donde la navegación se hace usando el hilandero en la barra de acción. Spinner artículos necesarios para incluir los iconos así que he creado diseños personalizados para that.The problema es que el hilandero es demasiado amplio con respecto a sus elementos. Estoy utilizando ActionBarSherlock. Los códigos que escribí hasta ahora:

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 método de la actividad:

  @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); } 

Una ilustración del problema: Introduzca aquí la descripción de la imagen

Tal vez el cambio de la anchura de su textview en navigation_list_dropdown_item.xml a wrap_content tenga efecto (si el cambio de ancho de LinearLayout no funciona). Puede ver esto en: http://dandar3.blogspot.com.es/2013/03/actionbarsherlock-custom-list-navigation.html .

  • ActionBar nativo selectableItemBackground con ActionBarSherlock
  • Barra de Acción Sherlock SearchView no se expande al hacer clic
  • ActionBarSherlock - SearchView es null?
  • ¿Por qué isItemChecked () devuelve true cuando está en ActionMode?
  • Cómo ir a fragmento de la actividad
  • Android - problemas para animar el icono de ActionBar de Fragments
  • Acciones de desbordamiento en ActionBar no mostradas
  • Teclado suave de Android con botones superpuestos (Captura de pantalla)
  • ActionBar y ViewPager y CursorLoader funciona, pero tal vez hay mejor manera
  • Mensaje inusual de logcat mostrado infinitamente - Android
  • Perder el título de ActionBar al crear un diseño personalizado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.