【问题标题】:Re drawing a view on orientation change重新绘制有关方向变化的视图
【发布时间】:2011-11-19 09:06:53
【问题描述】:

我在ViewGroup 中使用TextView,我正在使用ViewGroup 创建一个类似可滚动UI 的画廊。 TextView 的整个背景都填充了一种颜色。一切正常,除了当我将我的orientationportrait 更改为landscapeportrait 时,TextView's 的原始大小保持不变,因此,绘图看起来迷失方向。但是一旦我平移或滚动,它就会重新更正。我的扩展 ViewGroup 的课程没有处理绘图部分,我尝试了以下方法:

  • 使ViewGroup 无效。
  • 使当前显示的视图无效。
  • 实现 onConfigurationChanged(在 Manifest 中进行适当更改)。

我不想在配置更改时保存 currentState 后重新创建TextView 的过程。这是我在ViewGroup 中添加视图的代码 sn-p :-

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);

【问题讨论】:

  • 您找到解决方案了吗?我有一个类似的问题 - 我在纵向模式下显示电池图形,使用setBounds()“剪切”它,但是当我切换到横向并返回纵向时,会显示原始的“满”电池。以前的值不会被记住。

标签: android viewgroup android-view android-orientation


【解决方案1】:

您可以尝试在调用 setContentView 之后而不是之前将 textview 添加到 mWorkspace。

在此之前,可能无法确定屏幕方向并因此正确计算缩放比例。

将文本框添加到 onStart 或 onResume 也会有效果,尽管我发现在 onCreate 中缩放效果最好。

【讨论】:

  • 这部分在我的 onCreate() 中编码并且工作正常。我只在方向改变时遇到问题。
  • onCreate 在旋转后执行,因此从技术上讲,它只有在方向与应用程序启动时相同的情况下才能正常工作。在向其添加文本视图之前设置 ContentView 将导致调用 onMeasure 并在添加它们时允许适当的缩放。 (随后的平移和滚动将使用新的、现在正确的测量值,因此似乎可以整理出缩放比例。)
猜你喜欢
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
  • 2012-11-11
  • 2020-11-29
  • 2018-02-08
相关资源
最近更新 更多