2011-11-19 36 views
1

我在ViewGroup中使用了TextView,我使用ViewGroup創建了像可滾動UI這樣的圖庫。 TextView的整個背景都充滿了單色。除了當我將orientationportrait更改爲landscapeportrait(反之亦然)時,TextView's的原始尺寸將保持不變,因此繪圖看上去很迷惑。但只要我平移或滾動,它就會被重新校正。延伸ViewGroup我的類不照顧拱起部的,我已經試過如下:重新繪製方向更改的視圖

  • 無效的ViewGroup
  • 使顯示中的當前視圖無效。
  • 實施onConfigurationChanged(對Manifest進行適當更改)。

我不想去改變配置後保存currentState後重新創建TextView的過程。這是我加入的ViewGroup意見的代碼片段: -

final int[] backgroundColors = { Color.RED, Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW }; 
    for (int i = 0; i < 5; i++) { 
     TextView textView = new TextView(getApplicationContext()); 
     textView.setText(Integer.toString(i + 1)); 
     textView.setTextSize(100); 
     textView.setTextColor(Color.BLACK); 
     textView.setGravity(Gravity.CENTER); 
     textView.setBackgroundColor(backgroundColors[i]); 
     mWorkspace.addView(textView); 
    } 
    //mWorkspace.setSeparator(R.drawable.seperator); 
    setContentView(mWorkspace); 
+0

您是否找到解決方案?我有一個類似的問題 - 我在縱向模式下顯示電池圖形,使用'setBounds()'剪切它,但是當我切換到橫向並且回到縱向時,會顯示原始的「完整」電池。以前的值不會被記住。 – curioustechizen

回答

0

你可以嘗試添加的TextView到mWorkspace後調用的setContentView,而不是之前。

在此之前,可能無法確定屏幕方向並因此正確計算縮放比例。

將文本框添加到onStart或onResume中也會產生效果,儘管我發現縮放效果最好在onCreate上。

+0

這部分編碼在我的onCreate()中,工作正常。我只在方向改變時遇到問題。 –

+0

onCreate在旋轉之後執行,所以在技術上它只能在方向與應用程序啓動時相同的情況下正常工作。在向其添加文字視圖之前設置ContentView將導致onMeasure被調用,並允許在添加它們時進行適當的縮放。 (隨後的平移和滾動會使用新的,現在正確的測量值,因此似乎可以整理縮放比例。) – FixerMark

+0

nope ...問題仍然以相同的方式持續存在。 –