android - How to change layout when rotate? -
i have xml in layout-normal, layout-large , layout-land. i'm trying use provided xml in specific orientation.
i search here , i've tried.
1) used different layout name same ids in , override onconfigurationchanged , set layout there. here's code
@override public void onconfigurationchanged(configuration newconfig) { super.onconfigurationchanged(newconfig); if (newconfig.orientation == configuration.orientation_portrait) { setcontentview(r.layout.activity_login2); } if (newconfig.orientation == configuration.orientation_landscape) { setcontentview(r.layout.activity_login ); } } it changed when screen rotates inputed data in edittext gone. tried use onsaveinstancestate save instance still same. looks destroys activity , create new 1 widget initialized in oncreate gone.
2) found layout-land , put landscape layout there same layout name in layout-normal , layout-large example
res/layout-land -> activity_login.xml
res/layout-normal-> activity_login.xml
res/layout-large-> activity_login.xml
and removes onconfigurationchanged on code still doesn't work.
in androidmanifest in loginactivity put
<activity android:name=".loginactivity" android:configchanges="keyboardhidden|orientation|screensize" android:theme="@style/defaulttheme" android:windowsoftinputmode="adjustresize"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher"/> </intent-filter> </activity> is there anyway change layout when screen rotated? thank in advance.
the "screen size" qualifier has higher precedence "orientation" qualifier. https://developer.android.com/guide/topics/resources/providing-resources.html#alternativeresources
android supports several configuration qualifiers , can add multiple qualifiers 1 directory name, separating each qualifier dash. table 2 lists valid configuration qualifiers, in order of precedence
suppose have these files:
res/ layout-normal/ layout.xml layout-land/ layout.xml if have normal screen size device, won't matter whether use portrait or landscape. layout-normal chosen on layout-land.
you can solve 2 different ways.
first, put "default" layout in plain layout directory (instead of layout-normal). files be
res/ layout/ layout.xml layout-land/ layout.xml second, combine qualifiers in order make obvious you're differentiating between portrait , landscape. files be
res/ layout-normal/ layout.xml layout-normal-land/ layout.xml
Comments
Post a Comment