私のアプリケーション以下のタイプのスピナードロップダウンビューが必要です。 このタイプのスピナービューの場合。私はこのコードを書きました。
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.spinner, Android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
spinner_obj.setAdapter(adapter);
これは http://developer.Android.com/guide/topics/ui/controls/spinner.html から取得しましたが、取得したのは、
これを行う最善の方法を教えてください...
ここで古い投稿を復活させるようなものですが、受け入れられた答えは理想からほど遠いです。これを行う正しい方法は、レイアウトxmlでスピナーをドロップダウンモードに設定することです。
<Spinner
Android:id="@+id/my_spinner"
...
Android:spinnerMode="dropdown"/>
利用可能なオプションは「ダイアログ」と「ドロップダウン」です。
アプリケーションは古いテーマで実行されています。
Android 4.2を使用している場合、Androidアプリケーションテーマ(マニフェストファイル内))を
Android:theme="@Android:style/Theme.Holo.Light"
OR
Android:theme="@Android:style/Theme.Holo.Light.DarkActionBar"
4.0未満で実行している可能性があります。4.0はイメージとしてドロップダウンを表示します
GUIにはHoloEverywhereを使用します。 https://github.com/Prototik/HoloEverywhere HoloEverywhereは、古いAndroid 4.0以降のHoloテーマが必要な場合に最適な方法です。
そして、ドロップダウンには、Stephen Kidsonが述べたようにレイアウトでAndroid:spinnerMode = "dropdown"を使用します。
以下のようなポップアップを使用できます。
spinner=(EditText)findViewById(R.id.txt_Spinner);
spinner.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
p = new Point();
p.x = location[0]+(v.getHeight());
p.y = location[1]+v.getHeight();
if (p != null)
showPopup(statusActivity.this, p);
System.out.println("show popup");
}
});
// The method that displays the popup.
private void showPopup(final Activity context, Point p) {
int popupWidth = 300;
int popupHeight = 500;
// Inflate the popup_layout.xml
LinearLayout viewGroup = (LinearLayout) context.findViewById(R.id.popup);
LayoutInflater layoutInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = layoutInflater.inflate(R.layout.popup_layout, viewGroup);
// Creating the PopupWindow
popup = new PopupWindow(context);
popup.setContentView(layout);
popup.setWidth(popupWidth);
popup.setHeight(popupHeight);
popup.setFocusable(true);
// Some offset to align the popup a bit to the right, and a bit down, relative to button's position.
int OFFSET_X = 00;
int OFFSET_Y = 00;
// Clear the default translucent background
popup.setBackgroundDrawable(new BitmapDrawable());
// Displaying the popup at the specified location, + offsets.
popup.showAtLocation(layout, Gravity.NO_GRAVITY, p.x + OFFSET_X, p.y + OFFSET_Y);
((TextView)layout.findViewById(R.id.textView2)).setClickable(true);
((TextView)layout.findViewById(R.id.textView3)).setClickable(true);
((TextView)layout.findViewById(R.id.textView4)).setClickable(true);
((TextView)layout.findViewById(R.id.textView5)).setClickable(true);
((TextView)layout.findViewById(R.id.textView6)).setClickable(true);
((TextView)layout.findViewById(R.id.textView7)).setClickable(true);
((TextView)layout.findViewById(R.id.textView8)).setClickable(true);
((TextView)layout.findViewById(R.id.textView9)).setClickable(true);
}
and popup.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/popup"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/popup_bg"
Android:orientation="vertical" >
<TextView
Android:id="@+id/textView1"
style="@style/text_orange_heading"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Select Status"
Android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
Android:id="@+id/textView2"
style="@style/text_blue_contains"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:onClick="onClick"
Android:clickable="true"
Android:drawableBottom="@drawable/line_white"
Android:tag="Sleeping"
Android:text="Sleeping" />
<TextView
Android:id="@+id/textView3"
style="@style/text_blue_contains"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:onClick="onClick"
Android:clickable="true"
Android:drawableBottom="@drawable/line_white"
Android:tag="Available"
Android:text="Available" />
<TextView
Android:id="@+id/textView4"
style="@style/text_blue_contains"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:onClick="onClick"
Android:clickable="true"
Android:drawableBottom="@drawable/line_white"
Android:tag="Busy"
Android:text="Busy" />
<TextView
Android:id="@+id/textView5"
style="@style/text_blue_contains"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:onClick="onClick"
Android:clickable="true"
Android:drawableBottom="@drawable/line_white"
Android:tag="At work"
Android:text="At work" />
<TextView
Android:id="@+id/textView6"
style="@style/text_blue_contains"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:onClick="onClick"
Android:clickable="true"
Android:drawableBottom="@drawable/line_white"
Android:tag="Battery charge low"
Android:text="Battery charge low" />
<TextView
Android:id="@+id/textView7"
style="@style/text_blue_contains"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:onClick="onClick"
Android:clickable="true"
Android:drawableBottom="@drawable/line_white"
Android:tag="In meeting"
Android:text="In meeting" />
<TextView
Android:id="@+id/textView8"
style="@style/text_blue_contains"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:onClick="onClick"
Android:clickable="true"
Android:drawableBottom="@drawable/line_white"
Android:tag="TMS me later"
Android:text="TMS me later" />
<TextView
Android:id="@+id/textView9"
style="@style/text_blue_contains"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:onClick="onClick"
Android:clickable="true"
Android:drawableBottom="@drawable/line_white"
Android:tag="At the toilet"
Android:text="At the toilet" />
<EditText
Android:id="@+id/textCustomize"
style="@style/text_blue_contains"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:tag="Customize"
Android:text="Customize" />
</LinearLayout>