我看到了一些相關的問題,但我無法解決我的問題。 我爲PORTRAIT和LANDSCAPE模式創建了單獨的佈局。onConfigurationChanged()未在方向更改中調用
我修改了AndroidManifest.xml
文件以進行相應的方向更改,但在我在活動中實施時不起作用。
現在問題在於layout.addView(graphView, lp);
在onCreate()
。 我在GraphView
類中寫了絕對的硬編碼值。
因此,它可以完美的處理PORTRAIT模式,但是當我切換到LANDSCAPE模式時graphView不能正確放置。
要解決此問題,我創建了GraphViewLand
類,它專門爲LANDSCAPE模式編碼。但它沒有從中調用。
其餘佈局完美,因爲我爲每個方向創建了單獨的main.xml
文件。但由於graphView
是以編程方式創建的,因此未正確放置。
我在這裏做錯了什麼嗎?
我剛剛從here閱讀:
對你說,你處理有什麼類型的配置更改,您將收到一個電話到你當前活動的onConfigurationChanged(配置)方法,而不是被重新啓動。 但是,如果配置更改涉及任何您不處理的操作,該操作仍將重新啓動,並且不會調用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 :)
什麼是`.manifest`文件?你的意思是`AndroidManifest.xml`嗎? – WarrenFaith 2011-12-16 10:47:20