2013-10-21 21 views
0

當我更改當前活動的所有文本瀏覽的類型面全部更改,除了 Textview文本。Listviews兒童Textviews字體錯誤

但是,當我從列表視圖的itemClick在監聽器調用同一個函數的字體變化

 ((TextView) view).setTypeface(CreateTypeface); 

如何設置列表視圖的字體,而無需點擊它?

 final View rootView = findViewById(android.R.id.content); 


public void applyCustomFont(ViewGroup list) 
    { 


     for (int i = 0; i < list.getChildCount(); i++) { 
      View view = list.getChildAt(i); 

      if (view instanceof ViewGroup) 
      { 
       applyCustomFont((ViewGroup) view); 
      } else if (view instanceof TextView) 
      { 
       ((TextView) view).setTypeface(CreateTypeface); 



     } 
     } 
    } 



    lvfonts.setAdapter(new ArrayAdapter<String> (FontMUI.this,android.R.layout.simple_list_item_1, list)); 

    lvfonts.setOnItemClickListener(new OnItemClickListener() 
    { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) 
        { 
        applyCustomFont((ViewGroup)rootView); 
         } 
         } 
+0

你的問題是不是clear..My的理解是,設置字體在adpater類getview .. – Subburaj

+0

@Subburaj我沒有用過getview方法我已經更新了我的代碼檢查 –

+0

在列表視圖中點擊一部分,你叫「Customfont()」method.then只有當點擊列表視圖項它會調用和字體將改變..這是你的代碼的輸出...你的問題是什麼? – Subburaj

回答

1

使用這種伎倆來設置列表視圖的字體由於列表視圖不是列表視圖的孩子的就不能直接訪問您需要通過列表視圖本身來訪問他們的TextView的子類。

lvfonts.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       applyCustomFont((ViewGroup)rootView); 
       // or call you function to change the Typeface from here 
      } 
      }, 10); 
+0

作品像魅力謝謝你! –

1

您將需要創建一個用於填充ListView的自定義適配器。在該自定義適配器中,您需要覆蓋getView()方法,以便在將視圖顯示給用戶之前對其進行任何更改。

事情是這樣的:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    if (convertView == null) { 
     convertView = mInflater.inflate(android.R.layout.simple_list_item_1, parent, false); 
     ((TextView) convertView).setTypeface(CreateTypeface); 
    } 

    setupTextForPosition(convertView, position); 
}