讓Spinner中的文字居中


如果套用simple_spinner_item或是simple_spinner_dropdown_item,然后直接在Spinner中用

android:gravity="center"

是無法讓Spinner中的文字居中的。

 

這是因為Spinner中的文字其實是套在TextView中的(參考:http://www.douban.com/note/483280526/?type=like#sep)。

一開始我想到的一種辦法:

在spinner外面嵌套一個LinearLayout,設置android:gravity="center",這樣spinner自然就居中了。這樣的缺點是只能設置Spinner為Wrap_content了。

其實可以這樣:

simple_spinner_item.xml和simple_spinner_dropdown_item.xml其實都是在sdk\platforms\android-18\data\res\layout中的,那么我們可以覆寫他們。

比如這樣覆寫:

把TextView中的gravity改一下,這個問題就解決了。

 

另外,StackOverflow上還有人給出其他的方法

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; } };


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM