複数選択でスピナーのアイテムの高さを再サイズする方法は?
-
28-10-2019 - |
質問
私はただ見せています spinner
これに基づいて複数の選択肢があります stackoverflowの回答(@destilの回答を参照). 。ここで私の問題は、複数の選択肢があるスピナーのアイテムの高さを再びサイズできないことです。各アイテムの高さを再サイズする方法は?
解決
私が知っているように、カスタムアダプターを使用して、GetDropDownとGetViewメソッドをオーバーライドする必要があります。レイアウトをカスタマイズする各アイテムをカスタマイズすることができます。
まあ...言葉は良いです、より良い例、そのようなことを試してみてください:
public class CustomStringArrayAdapter extends ArrayAdapter<String>
{
private Activity myActivity;
public CustomStringArrayAdapter(Context context, int layoutResourceId, int textViewResourceId, List<String> objects, Activity act)
{
super(context, layoutResourceId, textViewResourceId, objects);
this.myActivity = act;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent)
{
return getCustomView(position, convertView, parent);
}
public View getCustomView(int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = myActivity.getLayoutInflater();
View row = inflater.inflate(R.layout.spinner_layout, parent, false);
TextView label = (TextView) row.findViewById(R.id.spinner_textview);
label.setText(getItem(position));
LinearLayout layout = (LinearLayout) row.findViewById(R.id.spinner_linear_layout);
return row;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = myActivity.getLayoutInflater();
View row = inflater.inflate(R.layout.spinner_layout, parent, false);
TextView label = (TextView) row.findViewById(R.id.spinner_textview);
label.setText(getItem(position));
return row;
}
}
とレイアウト:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_gravity="center"
android:gravity="center"
android:background="@drawable/transparent"
android:id="@+id/spinner_linear_layout">
<TextView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:gravity="center"
android:layout_gravity="center"
android:textSize="21sp"
android:singleLine="true"
android:id="@+id/spinner_textview"
android:textColor="@color/black" />
</LinearLayout>
(ただし、それは単なるサンプルです。選択に応じてサイズを変更する場合は、各オブジェクトにMESETEREDを追加して、このブール値に応じてビューを変更できます)
編集:その後、マルチスピナーで:
これを削除:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(),
android.R.layout.simple_spinner_item,
new String[] { spinnerText });
setAdapter(adapter);
スピナーに新しいカスタムアダプターを追加します。
MultiSpinner mMultiSpinner = (MultiSpinner) findViewById(R.id.multispinner);
mMultiSpinner.setAdapter(mCustomArrayAdapter);
所属していません StackOverflow