【发布时间】:2011-12-16 10:08:02
【问题描述】:
我看到了一些关于 SO 的相关问题,但我无法解决我的问题。 我已经为 PORTRAIT 和 LANDSCAPE 模式创建了单独的布局。
我已经修改了AndroidManifest.xml 文件以进行相应的方向更改,但是当我在活动中实现它时onConfigurationChanged() 不起作用。
现在问题出在onCreate() 中的layout.addView(graphView, lp);。
我在GraphView 类中写入了绝对硬编码值。
所以它在纵向模式下完美运行,但是当我切换到横向模式时,graphView 没有正确放置。
为了解决这个问题,我创建了 GraphViewLand 类,它专门为 LANDSCAPE 模式编码。但它没有被onConfigurationChanged() 调用。
由于我为每个方向创建了单独的main.xml 文件,因此布局的其余部分非常完美。但是由于graphView是通过程序创建的,所以没有正确放置。
我在这里做错了吗?
我刚从here读到这个:
对于您说您在那里处理的任何类型的配置更改,您将收到对当前活动的 onConfigurationChanged(Configuration) 方法的调用,而不是重新启动。 但是,如果配置更改涉及您未处理的任何内容,活动仍将重新启动,并且不会调用 onConfigurationChanged(Configuration)。
onCreate() 方法
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
RelativeLayout layout = (RelativeLayout) findViewById(R.id.MainLayout);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.ALIGN_TOP, btnindex.getId());
GraphView graphView = new GraphView(this, values, "CurrentGraph",
horlabels, verlabels);
layout.addView(graphView, lp);
}
onConfigurationChanged() 方法
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
Log.v("LAND", "SCPAE");
}
}
任何帮助 :)
【问题讨论】:
-
.manifest文件是什么?你的意思是AndroidManifest.xml?
标签: java android orientation android-relativelayout onconfigurationchanged