TextView对于Screen来说太大了

时间:2014-01-08 22:41:28

标签: android textview

我有一个包含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);

1 个答案:

答案 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.
}