2014-01-08 69 views
0

我有一個包含32行文本的TextView。在旋轉到橫向時,TextView對於屏幕來說變得太大,因此我希望它分成2,16行TextViews,但不知道這是否可行。這是我迄今爲止所擁有的。TextView對於屏幕太大

我知道我可以做一個測試,看看是否getHeight()>屏幕高度,但即使它是,我不知道該怎麼辦。

 TextView displayMethod = new TextView(getActivity()); 
     displayMethod.setTextColor(Color.BLACK); 
     displayMethod.setClickable(false); 
     displayMethod.setBackgroundColor(Color.WHITE); 
     displayMethod.setTextSize(14); 
     displayMethod.setTypeface(Typeface.MONOSPACE); 

     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
     params.setMargins(10,20,10, 0); 
     displayMethod.setLayoutParams(params); 

     int i = 0;  
     while (i < 32){ 

      String x = method.getNextLine(); 

      displayMethod.append(x + "\n");    
      i++; 
     } 
     linLayout.addView(displayMethod); 
+0

那麼你說當你旋轉到風景你想有兩個TextViews並排嗎? (就像在一家報紙上將一個故事分成多列) – Tyler

+0

你可以通過在文件夾「layout-land」中定義另一個帶有2列的xml佈局文件來實現這一點 – user2340612

+0

@TylerAndFriends是的,現貨!它需要通過編程方式生成,但並非全部在XML文件中完成 –

回答

2

有橫向查看時將使用所有的屏幕空間的好方法,而且其實很簡單拆分兩TextView件的行爲。

在您的res/layout文件夾旁邊,創建一個名爲layout-land的新佈局文件夾,並在此處將您的新佈局包含兩個不同的TextView對象。請注意,layout-land中的新佈局文件的名稱需要與layout文件夾中的原始佈局完全相同。 (實際上在這裏複製粘貼)。

從這裏,你有兩個選擇:

- 更新原有佈局的layout文件夾中有垂直堆疊的兩個TextView對象。確保TextViews的ID與layout-land中的橫向佈局相同。此選項不需要更改代碼。

- 保持您的原始佈局原樣,但請檢查Activity中是否存在風景特定的TextView,並適當填寫一個或兩個TextViews。例如...

TextView textView = findViewById(R.id.textView); 
TextView textViewLandscapeOnly = findViewById(R.id.textViewLandscapeOnly); 

if(textViewLandscapeOnly == null) { 
    //We're in portrait mode, so only fill the first text view with all 32 lines. 
} else { 
    //We're in landscape mode, so fill both text views, each with 16 lines. 
} 
+0

問題,我必須以編程方式生成TextView,原因是我無需解釋。你的方法可以工作,但是它可以通過程序來完成,類似於我的代碼片段 –