让Spinner中的文字居中

若是套用simple_spinner_item或是simple_spinner_dropdown_item,而后直接在Spinner中用android

android:gravity="center"

是没法让Spinner中的文字居中的。ide

 

这是由于Spinner中的文字实际上是套在TextView中的(参考:http://www.douban.com/note/483280526/?type=like#sep)。this

一开始我想到的一种办法:spa

在spinner外面嵌套一个LinearLayout,设置android:gravity="center",这样spinner天然就居中了。这样的缺点是只能设置Spinner为Wrap_content了。code

其实能够这样:component

simple_spinner_item.xml和simple_spinner_dropdown_item.xml其实都是在sdk\platforms\android-18\data\res\layout中的,那么咱们能够覆写他们。orm

好比这样覆写:xml

把TextView中的gravity改一下,这个问题就解决了。blog

 

另外,StackOverflow上还有人给出其余的方法pdo

The component that actually creates the items for the Spinner is the adapter. So you should customize it (by overriding the getView() method) to return centered TextView widgets.

In your case, replace the new ArrayAdapter<String> ... initialization with this code:

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, NomProjets) { @Override public View getView(int position, View convertView, ViewGroup parent) { return setCentered(super.getView(position, convertView, parent)); } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { return setCentered(super.getDropDownView(position, convertView, parent)); } private View setCentered(View view) { TextView textView = (TextView)view.findViewById(android.R.id.text1); textView.setGravity(Gravity.CENTER); return view; } };
相关文章
相关标签/搜索