custom Spinner Dialog
アプリ用に作成したい。私はこれとこれを見つけました。どちらも良いです。要件に従ってコードを更新しました。ユーザーがスピナーをタップしたときにダイアログの背景ビューを変更するためにセレクターファイルを使用しています。
私のコードは完全に機能していますが、問題はダイアログ ビューにあります。その幅が広がっていますが、いくつかの修正サイズに従って取得したいと考えています。
私のスピナービューの現在の出力は次のとおりです:-
しかし、私は次のようにそれを必要とします:-
Spinner_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/spinner_popup" // it's my selector file
android:orientation="horizontal" >
<TextView
android:id="@+id/Genere_name"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginLeft="5dp"
android:ellipsize="marquee"
android:gravity="center_vertical"
android:singleLine="true"
android:textColor="@android:color/black"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
spinner_popup.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/popup_header" android:state_selected="true"/>
<item android:drawable="@android:color/transparent" android:state_enabled="true"/>
<item android:drawable="@drawable/popup_header" android:state_pressed="true"/>
<item android:drawable="@drawable/popup_bg_box" android:state_enabled="false" android:state_focused="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>
Main_spinner_view
<LinearLayout
android:id="@+id/search_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/search_bg"
android:orientation="horizontal"
android:weightSum="3" >
<Spinner
android:id="@+id/Search_Spinner"
android:layout_width="95dp"
android:layout_height="30dp"
android:layout_gravity="left|center_vertical|center_horizontal"
android:layout_marginLeft="2dp"
android:layout_weight="1.2"
android:background="@drawable/search_dropdown" />
<EditText
android:id="@+id/Search_EDT"
android:layout_width="170dp"
android:layout_height="30dp"
android:layout_gravity="center|center_horizontal|center_horizontal"
android:layout_marginLeft="3dp"
android:layout_weight="1.5"
android:background="@drawable/search_textfield"
android:hint="Search By Free Text"
android:inputType="textPersonName"
android:padding="5dp"
android:textSize="16sp" >
</EditText>
<Button
android:id="@+id/Search_GO"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="right|center_horizontal|center_vertical"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:layout_weight="0.3"
android:background="@drawable/search_icon"
android:textColor="@android:color/white" />
</LinearLayout>
ここで、スピナーアダプターを呼び出しています
Search_Spinner.setAdapter(new MyAdapter(GridViewActivity.this,
R.layout.spinner_item, Search_Category_List));
Java コードは必要ないと思いますが、それでもここに貼り付けます。
public class MyAdapter extends ArrayAdapter<String>
{
public MyAdapter(Context context, int textViewResourceId,
ArrayList<String> objects)
{
super(context, textViewResourceId, objects);
}
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent)
{
return getCustomView(position, convertView, parent);
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
return getCustomView(position, convertView, parent);
}
public View getCustomView(int position, View convertView,
ViewGroup parent)
{
LayoutInflater inflater = getLayoutInflater();
View row = inflater.inflate(R.layout.spinner_item, parent, false);
TextView label = (TextView) row.findViewById(R.id.Genere_name);
spinner_text = Typeface.createFromAsset(getAssets(), "desc.ttf");
label.setTypeface(spinner_text);
label.setText(Search_Category_List.get(position));
return row;
}
}