Android中修改ArrayAdapter字體以及顏色


在Android開發中,ArrayAdapter不能修改TextView的字體或者顏色。

所以如果想要修改這些屬性,則要自己繼承ArrayAdapter類,重載getView函數。

在getView中通過position獲取Item的內容,賦值給TextView。即:

1 String str =(String)getItem(position);//通過position獲取當前要賦值的內容,例如 第一次要顯示的“han”就會傳入str中
2 TextView tv = (TextView) convertView.findViewById(android.R.id.text1);
3 tv.setText(str);//設置TextView中的字符串

如果想監聽TextView的點擊事件,可以實現OnClickListener接口,在onClick函數中動態修改點擊的Item的字體大小,顏色。

Activity中部分代碼如下:

 1 ListView lv = null;
 2     @Override
 3     protected void onCreate(Bundle savedInstanceState) {
 4         super.onCreate(savedInstanceState);
 5         setContentView(R.layout.activity_main);
 6         lv = (ListView)findViewById(R.id.lv);
 7         String[] strs = new String[]{"han","wang","zhao","qian"};
 8         MyAdapter<String> ad = new MyAdapter<String>(this,android.R.layout.simple_list_item_1,strs);
 9         lv.setAdapter(ad);
10 
11     }
12     //MyAdapter 繼承 ArrayAdapter
13     private class MyAdapter<T> extends ArrayAdapter{
14 
15         public MyAdapter(Context context, int resource, Object[] objects) {
16             super(context, resource, objects);
17         }
18 
19         MyListener listener = new MyListener();
20         //重載getView函數,等於說該函數完全接管ArrayAdapter的設置TextView操作
21         @Override
22         public View getView(int position, View convertView, ViewGroup parent) {
23             String str =(String)getItem(position);//通過position獲取當前要賦值的內容
24             if (convertView == null) {
25                 convertView = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
26             }
27             TextView tv = (TextView) convertView.findViewById(android.R.id.text1);
28             tv.setText(str);//設置TextView中的字符串
29             tv.setTextSize(10);//設置大小
30             tv.setOnClickListener(listener);//為每個TextView加載監聽函數
31             return convertView;
32         }
33         //MyListener類繼承OnClickListener,用來監聽每個Item的點擊事件
34         private class MyListener implements View.OnClickListener{
35             TextView lastTv = null;//記錄上一個變色的TextView
36             @Override
37             public void onClick(View v) {
38                 TextView tv = (TextView)v;
39                if(lastTv != null){//若lastTv不為空則要將lastTv顏色和字體大小初始化
40                    lastTv.setTextSize(10);
41                    lastTv.setBackgroundColor(Color.WHITE);
42                }
43                 tv.setTextSize(20);
44                 tv.setBackgroundColor(Color.RED);
45                 lastTv = tv;//保存點擊的TextView
46             }
47         }
48     }

 


免責聲明!

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



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