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 .

  • Fragmento en ViewPager en Fragmento no se vuelve a cargar en el cambio de orientación
  • Jar-Binding de ActionBarSherlock para Mono para Android
  • ActionBar Divider Styling
  • Pestaña Switch onNewIntent causa IllegalStateException
  • mejor manera de mostrar el elemento de punto tres puntos en la barra de acción sin utilizar un método de "hack"
  • Barra de Acción El Widget de Búsqueda de Sherlock expand no funciona
  • Estilos de ActionSherlockBar - PopupMenu
  • ActionBarSherlock: ¿cómo acceder a la vista del botón de inicio?
  • Mensaje inusual de logcat mostrado infinitamente - Android
  • Cambiar el texto dinámicamente para el botón de barra de acciones de Android
  • Barra de acción Android Sherlock muestra acciones en elementos desplegables siempre
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.