更改Spinner DropDown宽度

我需要调整此零件尺寸以完全显示。 我怎样才能做到这一点?

示例图片

我的适配器:

String[] navigations = getResources().getStringArray(R.array.actionBar); ArrayAdapter adapter = new ArrayAdapter( 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:

     

在Spinner标记的xml文件中添加属性

机器人:dropDownWidth = “150dp”

您需要做的是使用自定义适配器作为下拉列表而不是默认适配器,您可以在其中将每个“行”的“minimumWidth”设置为您想要的任何值:

 private class myCustomAdapter extends ArrayAdapter{ private List _navigations; private int _resource; private int _textViewResourceId; public myCustomAdapter (Context context, int resource, int textViewResourceId, List 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);