Android 2.3.3用のドロップダウンスピナーを作成する方法はありますか?私はActionbarSherlockを使用しています。ここでアクションバーの外にドロップダウンスピナー? (IceCreamサンドイッチスタイル、ActionBarSherlock付き)
は私が何を意味するかの例です:現状では
おかげ
Android 2.3.3用のドロップダウンスピナーを作成する方法はありますか?私はActionbarSherlockを使用しています。ここでアクションバーの外にドロップダウンスピナー? (IceCreamサンドイッチスタイル、ActionBarSherlock付き)
は私が何を意味するかの例です:現状では
おかげ
、あなたは運がいい。これはActionBarSherlockで行うことができ、4.0より前のバージョンで動作します。しかし、私は100%確信しているわけではありません.Jake Whartonは、このような使い方をしたいと思っています。なぜなら、それはちょうど "public api"、AFAIK(私は尋ねるつもりだった)ではないからです。とにかく、あなたは最初ActionBarSherlockクラスから拡張する独自のクラスを作成する必要があります。
public class MyIcsSpinner extends IcsSpinner {
public MyIcsSpinner(Context context, AttributeSet attrs) {
super(context, attrs, com.actionbarsherlock.R.attr.actionDropDownStyle);
}
public MyIcsSpinner(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
}
レイアウトに含める:
<com.blah.blah.blah.MyIcsSpinner
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:textAllCaps="true"
android:background="@drawable/abs__spinner_ab_holo_light"
android:textColor="#000000"
android:gravity="center"/>
は今、あなたはカスタムSpinnerAdapter
を作成する必要があり、あなたが必要とします適切なルック&フィールを得るために以下のメソッドをオーバーライドします。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final TextView filterName;
if (convertView == null) {
filterName = (TextView) layoutInflater.inflate(R.layout.filter_item, parent, false);
} else {
filterName = (TextView) convertView;
}
filterName.setText(getItem(position));
return filterName;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
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));
return filterName;
}
YMMV、esp。テーマについて。
ありがとう、素晴らしい作品! –
@dmonデバイスの回転後、ドロップダウンの幅は変更されません。あなたはこれをお勧めできますか? –
私は同じ問題を抱えており、私の解決策は非常に簡単です。 (私はHoloEverywhereを使用していませんでした)
このアイデアは、サブメニューを使用して4.0より前のデバイスにドロップダウンメニューを表示できるABSサンプルプロジェクトに由来しています。だから、私の考えは、3ドットのアイコンを隠すサブメニューを使用しています。ここ はコードです:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu sub = menu.addSubMenu("More");
sub.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
sub.getItem().setIcon(R.drawable.ic_menu);
getSupportMenuInflater().inflate(R.menu.activity_main, sub);
return true;
}
「詳細」メニューがMenuItem.SHOW_AS_ACTION_WITH_TEXT属性を持っていないので、単語「詳細」(または任意の名前付き)は、実際にアクションバーに表示されませんので。表示されている唯一のアイコンR.drawable.ic_menuはABSソースコードres/drawable-xxdpiからコピーすることができます。 "abs__ic_menu_moreoverflow_normal_holo_dark.png"という名前のフォルダ、いわゆる3ドットアイコンです。 R.menu.activity_mainはメニューxmlです。
API 1以降のDropdown [スピナー](http://developer.android.com/reference/android/widget/Spinner.html)はどうですか?テーマは異なる場合がありますが、そのほとんどをカスタムテーマにコピーできます。 – Sam
彼は、ダイアログではなく「ドロップダウン」するICSスピナーのルックアンドフィールを意味します。 – dmon