2013-11-04 28 views
0

我想設置我的應用程序中的所有文本視圖的大小到一定的大小。參考所有文字瀏覽

public void rbFontClicked(View view) { 
     // Is the button now checked? 
     boolean checked = ((RadioButton) view).isChecked(); 

     // Check which radio button was clicked 
     switch(view.getId()) { 
      case R.id.rbsmall: 
       if (checked) 
        //eveysingletextview.setTextSize(12) 
        everysingleedittext.setTextSize(12) 
       break; 

      case R.id.rbmedium: 
       if (checked) 
        // do nothing 
       break; 

      case R.id.rblarge: 
       if (checked) 
        // set dimension to large font, 
       break; 

我該如何去引用所有的textviews?我需要爲Edittexts做這件事,所以我不想單獨引用每個視圖,這將需要永遠。

TIA。

+0

你想檢索當前層次結構中的所有視圖,並檢查這些是textview還是edittext,我理解正確嗎? – Blackbelt

+1

您可以使用樣式XML文件來定義視圖外觀屬性(如文本大小)。請參閱以下相關的SO問題:http://stackoverflow.com/questions/3078081/setting-global-styles-for-views-in-android以及Android文檔:http://developer.android.com/guide/ topics/ui/themes.html – tiguchi

+0

好,這個想法是,用戶點擊一個單選按鈕,它將所有應用程序的字體更改爲大,中或小。我真的應該在這個問題上提出這個問題。 –

回答

1
int size = 10; 
switch(view.getId()) { 
      case R.id.rbsmall: 
       if (checked) 
        size = 12; 
       break; 

// other case 

} 

    ViewGroup root = (ViewGroup) findViewById(R.id.rootLayout); 
    int children = root.getChildCount(); 
    for (int i = 0; i < children; i++) { 
     View view = root.getChildAt(i); 
     if (view instanceOf TextView) { 
     TextView tmp = (TextView)view; 
     view.setText(size); 
     } 
    } 

這不是優雅,但它應該工作。檢查排字錯誤

+0

據我所知,這將改變所有的文字視圖的大小,和另一個if語句可以把它放在edittexts。它僅僅是一個findViewById(R.id.other_layout)的情況下x版面的佈局來改變它的整個應用程序,而不僅僅是當前的佈局? –

+0

我的任務編號在今晚的午夜時間到期 - 不要擔心電話:) –

+0

只適用於當前的佈局。但是你可以考慮創建一個靜態方法,並在更改活動時調用它。伊莫這個接近是錯誤的。你應該爲這些情況使用風格。 – Blackbelt