我在 SO 上看到了一些相关问题,但我无法解决我的问题。我为肖像和风景模式创建了单独的布局。
我已修改AndroidManifest.xml
文件以进行相应的方向更改,但onConfigurationChanged()
在活动中实现它时无法正常工作。
现在问题layout.addView(graphView, lp);
在onCreate()
. 我在GraphView
课堂上写了绝对硬编码值。
所以它在肖像模式下完美地工作,但是当我切换到风景模式时,graphView 没有正确放置。
为了解决这个问题,我创建了GraphViewLand
专门为 LANDSCAPE 模式编码的类。但它没有被调用onConfigurationChanged()
。
由于我main.xml
为每个方向创建了单独的文件,因此其余的布局非常完美。但由于graphView
是以编程方式创建的,因此放置不正确。
我在这里做错什么了吗?
我刚从这里读到这个:
对于您说您在那里处理的任何类型的配置更改,您将收到对当前活动的 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");
}
}
任何帮助appriciated :)