Я видел некоторые связанные вопросы по SO, но я не могу решить свою проблему.
Я создал отдельный макет для режима PORTRAIT и LANDSCAPE.
Я изменил файл 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");
}
}
Любая помощь оценена:)