ICS旋转器在动作栏外,下拉菜单不工作



我尝试使用ActionBarSherlock使IcsSpinner在ActionBar之外。我使用的信息从下拉旋转器外的动作栏?(冰淇淋三明治风格,与ActionBarSherlock)。看起来不错,这就是我想要的。我的问题是,我的旋转器只显示第一个选项,是不可点击的。下拉菜单不可访问,getDropDownView方法从未被调用。

HoloSpinner.java:

import android.content.Context;
import android.util.AttributeSet;
import com.actionbarsherlock.internal.widget.IcsSpinner;
public class HoloSpinner extends IcsSpinner {
  public HoloSpinner(Context context, AttributeSet attrs) {
    super(context, attrs, com.actionbarsherlock.R.attr.actionDropDownStyle);
  }
 public HoloSpinner(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
  }
}

HoloSpinnerAdapter.java:

package pl.tmmk.organizer.studencki;
import android.content.Context;
import android.database.DataSetObserver;
import android.text.TextUtils.TruncateAt;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.SpinnerAdapter;
import android.widget.TextView;
public class HoloSpinnerAdapter<T> extends ArrayAdapter<T> implements SpinnerAdapter {
    private LayoutInflater layoutInflater;
    private T[] array;
public HoloSpinnerAdapter(Context context, int res, T[] objects){
    super(context, res, objects);
    layoutInflater = LayoutInflater.from(context);
    array = objects;
}
@Override
  public View getView(int position, View convertView, ViewGroup parent) {
    Log.d("HINT", "getView");
    final TextView filterName;
    if (convertView == null) {
      filterName = (TextView) layoutInflater.inflate(R.layout.sherlock_spinner_item, parent, false);
    } else {
      filterName = (TextView) convertView;
    }
    filterName.setText(getItem(position).toString());
    return filterName;
  }
  @Override
  public View getDropDownView(int position, View convertView, ViewGroup parent) {
      Log.d("HINT", "getDropDownView");
    final TextView filterName;
    if (convertView == null) {
      filterName = (TextView) layoutInflater.inflate(R.layout.sherlock_spinner_dropdown_item, parent, false);
      filterName.setEllipsize(TruncateAt.END);
    } else {
      filterName = (TextView) convertView;
    }
    filterName.setText(getItem(position).toString());
    return filterName;
  }

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return array.length;
}
@Override
public T getItem(int position) {
    // TODO Auto-generated method stub
    return array[position];
}
@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}
@Override
public int getItemViewType(int arg0) {
    // TODO Auto-generated method stub
    return 0;
}
@Override
public int getViewTypeCount() {
    // TODO Auto-generated method stub
    return 0;
}
@Override
public boolean hasStableIds() {
    // TODO Auto-generated method stub
    return false;
}
@Override
public boolean isEmpty() {
    // TODO Auto-generated method stub
    return false;
}
@Override
public void registerDataSetObserver(DataSetObserver observer) {
    // TODO Auto-generated method stub
}
@Override
public void unregisterDataSetObserver(DataSetObserver observer) {
    // TODO Auto-generated method stub
}
}

XML文件部分:

<com.xxx.yyyy.zzzzz.HoloSpinner
android:layout_marginTop="4dp"
android:id="@+id/event_type_spinner"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:textAllCaps="true"
android:background="@drawable/abs__spinner_ab_holo_dark"
android:textColor="#000000"
android:gravity="center"/>
微调器初始化:

String[] eventTypeArray = getResources().getStringArray(R.array.event_type_array);
HoloSpinnerAdapter<String> spinnerAdapter = new HoloSpinnerAdapter<String>(this, R.layout.sherlock_spinner_item, eventTypeArray);
HoloSpinner spinner = (HoloSpinner) findViewById(R.id.event_type_spinner);
spinner.setAdapter(spinnerAdapter);

我的目标是获得ICS看起来像spinner即使在旧的Android版本的手机。我不知道我做错了什么。谢谢你的帮助。

在manifest中设置样式很重要,就像

<activity android:name="fr.example.demo.MyActivity" android:theme="@style/Theme.Sherlock"></activity>

或在style.xml

中修改主题样式
<style name="AppTheme" parent="@style/Theme.Sherlock">
</style>

最新更新