web-dev-qa-db-ja.com

スピナードロップダウンの幅を変更する

この部分のサイズをフルディスプレイに変更する必要があります。これどうやってするの?

Example image

私のアダプター:

String[] navigations = getResources().getStringArray(R.array.actionBar);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                getBaseContext(), R.layout.custom_spinner_title_bar,
                Android.R.id.text1, navigations);
        adapter.setDropDownViewResource(R.layout.custom_spinner_title_bar);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
        actionBar.setListNavigationCallbacks(adapter, navigationListener);

custom_spinner_title_bar.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/RelativeLayout1"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:gravity="fill_horizontal"
    Android:orientation="vertical" >

    <TextView
        xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:id="@Android:id/text1"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:gravity="center"
        Android:padding="5dip"
        Android:textAppearance="?android:attr/textAppearanceMedium"
        Android:textColor="#FFFFFF" />

</RelativeLayout>
21
WOLVERINE

xmlタグのSpinnerファイルに属性を追加

Android:dropDownWidth="150dp"
82
Umar Nafeez

あなたがする必要があるのは、デフォルトのアダプタではなく、ドロップダウン用のカスタムアダプタを使用することです。この場合、各「行」の「最小幅」を任意に設定します。

private class myCustomAdapter extends ArrayAdapter{
    private List<String> _navigations;
    private int _resource;
    private int _textViewResourceId;

    public myCustomAdapter (Context context, int resource, int textViewResourceId, List<String> objects) {
        super(context, resource, textViewResourceId, objects);
        _navigations = objects;
        _resource = resrouce;
        _textViewResourceId = textViewResourceId;
    }

    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent){
        View row;
        LayoutInflater inflater=getLayoutInflater();            
        row = inflater.inflate(_resource, null);
        TextView _textView = row.findViewById(_textViewResourceId);
        _textView.setText(_navigations.get(position));


        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        int _width = size.x;

        row.setMinimumWidth = _width;
        return row;
    }
}

もちろん、「minimumWidth」を使用して、他の任意のものを選択できます。この例では、画面の幅に一致するように設定されています(ただし、よりスマートなアプローチは、アプリのコンテナーフレームを測定し、それに一致させることです)。

次に、アダプターを設定します。

myCustomAdapter adapter = new myCustomAdapter(getBaseContext(), R.layout.custom_spinner_title_bar,Android.R.id.text1, navigations);   
3
Elad Avron