私は非常に多くのチュートリアルを試しましたが、アクションバー(シャーロックバージョン)でスピナーを作成する方法を教えてくれる記事を見つけることができませんでしたが、右側にあります。
それを行う方法はありますか?追加のビューとアダプターを作成する必要がありますか? 右側にそのスピナーを作成する簡単な方法を知りたいだけです。他には何もありません。
私は非常に多くのチュートリアルを試しましたが、アクションバー(シャーロックバージョン)でスピナーを作成する方法を教えてくれる記事を見つけることができませんでしたが、右側にあります。
それを行う方法はありますか?追加のビューとアダプターを作成する必要がありますか? 右側にそのスピナーを作成する簡単な方法を知りたいだけです。他には何もありません。
スピナーを含むビューのカスタム レイアウトを作成する必要があります。膨らませてアクションバーに置くと、準備完了です。
ここに、このためのサンプル コードがあります (これは、アクション バーにレイアウトを初期化して配置するために、アクティビティ内で行うことです)。
LayoutInflater inflater = (LayoutInflater) getSupportActionBar().getThemedContext().getSystemService(LAYOUT_INFLATER_SERVICE);
final View spinnerView = inflater.inflate(R.layout.layout_spinner, null);
Spinner spinner = (Spinner) spinnerView.findViewById(R.id.my_spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.spinner_items_array, R.layout.spinner_item);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// Do whatever you want with your selected item. You can get it as: parent.getItemAtPosition(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
getSupportActionBar().setIcon(getResources().getDrawable(R.drawable.ic_actionbar_logo));//set your actionbar logo
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE );
LayoutParams layoutParams = new ActionBar.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT);
layoutParams.gravity = Gravity.RIGHT; // set your layout's gravity to 'right'
getSupportActionBar().setCustomView(spinnerView, layoutParams); //place your layout on the actionbar
レイアウトは次のようになります (layout_spinner.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="match_parent"
android:orientation="vertical" >
<Spinner
style="@style/Widget.Sherlock.Light.Spinner.DropDown.ActionBar"
android:id="@+id/my_spinner"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="right" />
</LinearLayout>
res フォルダーに格納されている配列 (spinner_items_array):
<string-array name="spinner_items_array">
<item>Item1</item>
<item>Item2</item>
</string-array>
スピナー カスタム アイテム (spinner_item.xml):
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cab_spinner_item"
style="?android:attr/spinnerItemStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:singleLine="true"
android:textAlignment="inherit"
android:textColor="@android:color/white" /> <!-- Set whatever color you want for the text -->
最後に、ドロップダウン リスト アイテム (spinner_dropdown_item.xml):
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
style="?android:attr/spinnerDropDownItemStyle"
android:layout_width="match_parent"
android:layout_height="48dp"
android:ellipsize="marquee"
android:singleLine="true"
android:textAlignment="inherit"
android:textColor="@android:color/white" />
この回答がお役に立てば幸いです!! 幸運を!