我有一个包含32行文本的TextView。在旋转到横向时,TextView对于屏幕变得太大,因此我希望它分成2行,16行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 :(得分:2)
在横向观看时,将TextView
分成两部分的行为将是一种使用所有屏幕空间的好方法,实际上非常简单。
在res/layout
文件夹旁边,创建一个名为layout-land
的新布局文件夹,此处将新布局包含两个不同的TextView
对象。请注意,layout-land
中新布局文件的名称必须与layout
文件夹中的原始布局完全相同。 (这里实际建议使用复制粘贴)。
从这里,您有两种选择:
- 更新layout
文件夹中的原始布局,以便垂直堆叠两个TextView
个对象。与TextViews
中的横向布局相比,确保此布局中layout-land
的ID相同。此选项无需更改代码。
- 保留原始布局,但请检查TextView
中特定景观Activity
的存在情况,并适当填写一个或两个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.
}