Android 重新绘制有关方向更改的视图
我在Android 重新绘制有关方向更改的视图,android,viewgroup,android-view,android-orientation,Android,Viewgroup,Android View,Android Orientation,我在ViewGroup中使用TextView,并使用该ViewGroup创建类似于图库的可滚动用户界面。TextView的整个背景用单一颜色填充。一切正常,除了当我将方向从纵向更改为横向到纵向时,反之亦然,文本视图的原始大小保持不变,因此,图形看起来没有方向感。但只要我平移或滚动,它就会被重新更正。我的类扩展了ViewGroup,它不负责绘图部分,我尝试了以下方法: 使视图组无效 使显示的当前视图无效 实施onConfigurationChanged(清单中有适当的更改) 当配置更改时,我不
ViewGroup
中使用TextView
,并使用该ViewGroup
创建类似于图库的可滚动用户界面。TextView
的整个背景用单一颜色填充。一切正常,除了当我将方向
从纵向
更改为横向
到纵向
时,反之亦然,文本视图的
原始大小保持不变,因此,图形看起来没有方向感。但只要我平移或滚动,它就会被重新更正。我的类扩展了ViewGroup
,它不负责绘图部分,我尝试了以下方法:
- 使
视图组无效
- 使显示的当前视图无效
- 实施
(清单中有适当的更改)onConfigurationChanged
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);
final int[]backgroundColors={Color.RED,Color.BLUE,Color.CYAN,Color.GREEN,Color.YELLOW};
对于(int i=0;i<5;i++){
TextView TextView=新的TextView(getApplicationContext());
setText(Integer.toString(i+1));
textView.setTextSize(100);
textView.setTextColor(Color.BLACK);
textView.setGravity(Gravity.CENTER);
setBackgroundColor(backgroundColors[i]);
mWorkspace.addView(文本视图);
}
//M工作空间.固定分离器(R.可牵引分离器);
setContentView(mWorkspace);
您可以尝试在调用setContentView之后而不是之前将textview添加到mWorkspace
在此之前,可能无法确定屏幕方向,因此无法正确计算缩放比例
将文本框添加向下移动到onStart或onResume也会产生效果,尽管我发现缩放在onCreate中效果最好。这部分代码在我的onCreate()中编写,工作正常。我只是在方向更改期间遇到问题。onCreate是在旋转之后执行的,所以从技术上讲,只有方向与应用程序启动时相同时,它才能正常工作。在将文本视图添加到ContentView之前设置ContentView将导致调用onMeasure,并允许在添加它们时进行适当的缩放。(随后的平移和滚动将使用新的、现在正确的测量值,因此似乎可以对缩放进行排序。)找到解决方案了吗?我有一个类似的问题-我在纵向模式下显示电池图形,使用
setBounds()
将其“切断”,但当我切换到横向并返回纵向时,会显示原来的“满”电池。以前的值不会被记住。