remplacer la mise en page lors du changement d'orientation
Mon application a une webview et quelques boutons à l'intérieur d'un LinerLayout.
le problème c'est que je veux que les boutons sur le bas en mode portrait et sur la gauche en mode paysage alors que la webview le maintient de l'état.
Deux différentes mise en page ne fonctionne pas comme il la force de loisirs de l'activité de l'actualisation de la webview. pour l'instant j'utilise android:configChanges="orientation" dans l'activité de tag afin webview ne pas être en pleine forme sur changement d'orientation.
Est-il de toute façon à remplacer la disposition des boutons sur le changement de mode d'écran?
mode portrait
mode paysage
source d'informationauteur Ali
Vous devez vous connecter pour publier un commentaire.
J'ai testé des fragments, mais traiter avec fragment rend les choses beaucoup plus complexe, et le fragment lui-même les besoins de l'enregistrement et la restauration qui peut ne pas fonctionner dans une webview qui a javascript état, Alors j'ai cherché et trouver un bel article quelque part et à quelques modifications près, je suis arrivé à une solution que je propose:
Tout d'abord, ajoutez
android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
ainsi, l'application gère les modifications de configuration à la place d'android.Faire deux mise en page différente pour le paysage et le portrait. Dans les deux mises en page au lieu de webview place un FrameLayout qui agit comme un espace réservé pour le webview.
Définir initUI méthode de ce genre et de tout mettre liées à l'INTERFACE utilisateur de l'initialisation de cette méthode:
Si la webview n'existe pas encore, il sera créé et après
setContentView(R.layout.main)
il sera ajouté à la mise en page. Toute autre personnalisation de l'INTERFACE utilisateur vous avez besoin est venu après.et dans
onConfigurationChanged
:Dans
onConfigChange
la webview est retiré de la vieille de l'espace réservé etinitui
sera appelé, ce qui permettra de l'ajouter à la nouvelle mise en page.Dans
oncreate()
appelinitui()
pour que l'interface utilisateur sera initialisé pour la première fois.Je souhaite qu'il serait utile pour quelqu'un.
mettre à
layout-land
pour les mises en page que vous souhaitez que le paysage.L'idée est, vous ne devriez pas vraiment utiliser
configChange="orientation"
parce qu'il a ses inconvénients. Vous pouvez trouver un poste détaillée ici . Vous devez manuellement la poignée de votre état si vous souhaitez modifier votre mise en page. Bien sûr, vous pouvez programmaiclly de le faire, mais si vous voulez utiliser le format xml pour ce faire. Vous pouvez vous maintenir webView avec des fragments.Essayez d'utiliser ce code:
Si vous utilisez
android:configChanges="orientation|screenSize"
Dans le manifeste,il ignore le XML dans "layout-land". Si vous créez un autre XML pour le paysage n'utilisez pas le
android:configChanges="orientation|screenSize"
balise pour que l'activité dans le manifeste.Faire de votre vision une relative mise en page. Lorsque les changements d'orientation il suffit d'ajuster la mise en page params pour chaque vue dans le code.
Avoir les boutons de votre être contenues dans un linéaire de la mise en page
Comme dans..
Portrait
Paysage
Assurez-vous que le LayoutParams que vous utilisez sont les RelativeLayout params (toujours utiliser le Layoutparams de la vue parent)
Vous pouvez ajouter des valeurs(la configuration que vous avez besoin - par exemple. la terre,portrait) sous-dossier de ressources et de mentionner la mise en page dont vous avez besoin pour cette configuration.. C'est aussi simple que cela.
Veuillez extraire le lien ci-dessous pour de plus amples informations
http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters