ICS微调器动作条之外,没有工作下拉菜单
我试着用ActionBarSherlock使IcsSpinner动作条之外。我用的信息从Dropdown动作条以外的微调? (冰淇淋三明治风格,W / ActionBarSherlock)。它看起来不错,这正是我期待的。我的问题是,我的微调仅显示第一个选项,而不是点击。下拉菜单不可访问和方法getDropDownView永远不会被调用。
I've tried to make IcsSpinner outside ActionBar using ActionBarSherlock. I used the informations from Dropdown Spinner outside of actionbar? (IceCream Sandwich style, w/ActionBarSherlock). It looks nice, that's what I am looking for. My problem is that my spinner shows only first option and is not clickable. Dropdown menu is not accessible and method getDropDownView is never called.
HoloSpinner.java:
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:
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文件的一部分:
part of xml file:
<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的样子,甚至微调在旧版本的Android手机。我不知道我做错了。感谢您的任何帮助。
My goal is obtaining ICS look like spinner even on older Android version phone. I have no idea what I am doing wrong. Thank you for any help.
重要的是要设定在样式在清单像
It's IMPORTANT to set the style in the manifest like
<activity android:name="fr.example.demo.MyActivity" android:theme="@style/Theme.Sherlock"></activity>
或修改的主题风格style.xml
or to modify the theme style in style.xml
<style name="AppTheme" parent="@style/Theme.Sherlock">
</style>