プロンプトを変更するには、@aswin-kumar が提案したのと同様の方法を使用する必要がありますが、ドロップダウンの最初の要素に別のスタイルを使用する必要があります。
まず、それを拡張ArrayAdapter
して呼び出しますCustomArrayAdapter
: package com.example.project;
package com.example.project;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.List;
// I extend this using ArrayAdapter<String>, but you can use anything as the type
// parameter, or parameterize it as necessary.
public class CustomArrayAdapter extends ArrayAdapter<String> {
private String title;
public CustomArrayAdapter(Context aContext, int aTextViewResource, List<String> aOptions, String title) {
super(aContext, aTextViewResource, aOptions);
this.title = title;
}
@Override
public View getDropDownView(int aPosition, View aConvertView, ViewGroup aParent) {
LinearLayout v = null;
if (aPosition == 0) {
LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = (LinearLayout) inflater.inflate(R.layout.dropdown_header, aParent, false);
TextView tv = (TextView) v.findViewById(R.id.dropdown_item);
tv.setText(getItem(aPosition));
} else {
LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = (LinearLayout) inflater.inflate(R.layout.dropdown_item, aParent, false);
TextView tv = (TextView) v.findViewById(R.id.dropdown_item);
tv.setText(getItem(aPosition));
tv.setHeight((int) (tv.getTextSize() * 2));
}
return v;
}
@Override
public int getCount() {
return super.getCount() + 1;
}
@Override
public String getItem(int position) {
if (position == 0) {
return title;
}
return super.getItem(position - 1);
}
@Override
public boolean isEnabled(int position) {
return position != 0;
}
}
次に、次のレイアウトを に使用しますdropdown_header.xml
。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/dropdown_item"
android:textColor="@android:color/black"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:gravity="left|center_vertical"
android:textSize="9pt" />
<!-- This adds a black separator line between the title and the items. You can remove
if you want -->
<LinearLayout
android:id="@+id/separator"
android:layout_height="4dp"
android:layout_width="match_parent"
android:background="@android:color/black"
android:orientation="vertical"/>
</LinearLayout>
フォーム ビュー レイアウト ファイル (form_view_layout.xml):
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/spinner_dialog_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="9pt" />
スピナー レイアウト ファイル ( spinner_layout.xml
):
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="@android:color/transparent"/>
次に、新しいアダプターを に取り付けますSpinner
。
CustomArrayAdapter adapter = new CustomArrayAdapter(aActivity, R.layout.form_view_layout, aModel.getEnumerableOptions(), aModel.getTitle());
View parentView = aActivity.getLayoutInflater().inflate(R.layout.spinner_layout, aParent, false);
spinner = (Spinner) parentView.findViewById(R.id.spinner);
spinner.setAdapter(adapter);
最後に、表示する文字列をスピナー アダプターに追加しadapter
、適切なファイルのスタイルを設定すると、準備完了です。