31 Jours d'Android: Jour 19ScrollViews Aujourd'hui allaient continuer 31 Jours d'Android en commençant à parler de deux façons différentes d'afficher plus d'informations que ce qui ira sur l'écran: 160 ScrollView s et ListView s.160 Aujourd'hui, nous allons nous concentrer sur ScrollView s Et demain sera ListView s.160 En raison de la façon dont ces deux View s de travail, vous ne voulez pas combiner les deux d'eux.160 Une fois Ive allé sur les deux hors demain, Ill parler de pourquoi vous devriez les garder séparés.160 Vous Pouvez télécharger l'exemple de code allaient commencer aujourd'hui avec ici. Le ScrollView vous permet de créer des écrans qui ressemblent très étroitement à une page web.160160160 L'ajout d'une vue de défilement à une mise en page vous permet de faire défiler n'importe quoi dans ScrollView verticalement et horizontalement.160 Si vous exécutez votre application en ce moment, N'est pas nécessaire pour le défilement: 160 Toutefois, si vous ajoutez une quantité énorme de texte en bas, cela pourrait changer.160 Ouvrez votre fichier resvaluesstrings. xml et ajoutez une nouvelle String.160 Nommez le bigtext et mettez un texte très énorme String dans there.160 Quelque chose comme ceci: Afin de rendre votre corde convenablement long, Id recommander obtenir quelques paragraphes de Bacon Ipsum .160 Maintenant, ouvrez le fichier de configuration reslayoutmain. xml.160 Vous devez ajouter une nouvelle TextView sous le dernier bouton Et le mettre à votre valeur bigtext.160 Lorsque vous avez fait, vous devriez avoir quelque chose comme ceci: Maintenant, lorsque vous exécutez votre application, vous remarquerez que le texte sort de l'écran et vous n'avez pas de toute façon de le voir: Heres où vous pouvez utiliser le ScrollView .160 Votre premier instinct peut être de revenir à votre mise en page et de changer le LinearLayout à la racine à un ScrollView .160 Si vous faites cela, vous serez accueilli par cette erreur désagréable: Causé par: java. lang. IllegalStateException: ScrollView peut Héberger seulement un enfant direct Cela signifie que vous ne pouvez pas avoir plus d'une vue en tant que enfant du ScrollView .160 Puisque votre mise en page a un couple TextViews. Un EditText. Et un couple de boutons. Vous ne pouvez pas simplement remplacer la racine LinearLayout comme ceci.160 Ce que vous pouvez faire est d'envelopper le LinearLayout à l'intérieur d'un ScrollView .160 Cela vous permet d'avoir un enfant sous ScrollView, mais ont plusieurs enfants sous lui.160 Lorsque vous avez terminé, XML devrait ressembler à ceci: Maintenant, lorsque vous exécutez votre application, vous serez en mesure de taper sur l'écran et faites glisser vers le haut: Notez que lorsque vous faites défiler, vous verrez une barre de défilement sur le côté droit de l'écran.160 Vous remarquerez que vous ne pouvez pas défiler vers la droite Ou left.160 Ceci est dû au fait que ScrollView ne prend en charge que le défilement vertical.160 L'élément HorizontalScrollView vous permet de faire défiler horizontalement.160 Il est possible de placer HorizontalScrollView comme enfant de VerticalScrollView qui vous permettra de faire défiler les deux directions, Cependant, Google dit que c'est une mauvaise idée .160 Au lieu de cela, ils suggèrent que vous remplacez ScrollView et créez votre propre contrôle capable de défilement vertical et horizontal.160 Cela est entièrement possible et si vous recherchez sur Internet, vous trouverez plusieurs exemples de personnes Ceci et même le code source pour leurs implémentations.160 Comme je voudrais le faire, Id vous rappelle de vous rappeler que juste parce que vous pouvez le faire, ne signifie pas que vous devriez.160 L'expérience quand vous avez à défiler dans des directions multiples sur un petit écran Le périphérique n'est pas très bon (oui le WebView et le navigateur vous donnent cette capacité et l'Id discute si j'aime cela parfois) .160 Il existe un certain nombre d'attributs différents que vous pouvez utiliser dans un ScrollView y compris ceux qui vous permettent de changer la façon dont les barres de défilement regarder , Pendant combien de temps ils sont visibles, s'ils sont visibles, etc..160 Par ailleurs, vous pouvez contrôler le défilement de votre ScrollView par programme si vous le souhaitez.160 Par exemple, si vous souhaitez ajouter un bouton qui déclencherait le ScrollView Dessus, ceci est possible en faisant ce qui suit: Ici vous obtenez une référence à votre ScrollView et lui disant de faire défiler de nouveau vers le coin supérieur gauche.160 Une autre chose importante au sujet du ScrollView est qu'il ne doit pas être l'élément de racine dans votre disposition .160 Si vous vouliez avoir un en tête de texte en haut de l'écran que votre vue de défilement n'entendrait pas, vous pourriez juste mettre le ScrollView comme un enfant de la racine LinearLayout .160 Voici votre XML de disposition où le ScrollView enveloppe seulement le Bigtext TextView: Vous devriez être prêt à utiliser ScrollView s dans vos propres applications now.160 Demain bien aller sur l'autre méthode d'affichage d'un lot d'informations en une seule page, ListView s.160 ShareId besoin de définir des contraintes dans uiscrollview dans viewcontroller Qui contient la barre de navigation et tabbar. I ont placé un uiview (contentView) dans scrollview qui est de même hauteur que de scrollview. These sont les choses que j'ai mis curently, définir 4 contraintes pour scrollview (top, bottom, left, right) avec des contraintes À marge non cochée qui est 0 pour tous les bords. Définissez 4 contraintes pour uiview (contentView) à l'intérieur de scrollview (haut, bas, gauche, droite) avec des contraintes à la marge non cochée qui est 0 pour tous les bords. La largeur égale égale et la hauteur égale pour scrollview et la sortie d'UIView (contentView) s'affiche comme ceci uiview (contentView) obtient placé plus bas environ 64 px (approximativement).Cette vue ne devrait pas placer comme ceci. Quelqu'un peut m'aider à résoudre ceci. Voici la démo de projet que j'ai travaillé et peut être téléchargé ici demandé Mar 14 16 à 20:47 J'ai travaillé sur votre projet et le scrollview doesn39t commencer au sommet de la VC, il commence à la fin de la navBar. Seule la plus petite vue devrait commencer là. En outre, vous don39t ont même une classe pour ce VC, vous devez l'ajouter et l'ensemble de la vue a chargé la hauteur scrollview que vous voulez. Pour être honnête, je vous recommande de commencer un nouveau tutoriel à partir de zéro parce qu'il ya quelques choses manquantes dans votre projet et sera plus rapide. J'ai pris un uiview (contentView) à l'intérieur de scrollview qui est de même hauteur que de scrollview. These sont les choses qui J'ai défini curently, définir 4 contraintes pour scrollview (top, bottom, left, right) avec des contraintes à marge non cochée qui est 0 pour tous les bords. Définissez 4 contraintes pour uiview (contentView) à l'intérieur de scrollview (haut, bas, gauche, droite) avec des contraintes à la marge désactivée qui est 0 pour toutes les arêtes. La largeur égale égale et la hauteur égale pour scrollview et la sortie d'UIView (contentView) s'affiche comme ceci uiview (contentView) obtient placé plus bas environ 64 px (approximativement).Cette vue ne devrait pas placer comme ceci. Quelqu'un peut m'aider à résoudre ceci. Voici la démo de projet que j'ai travaillé et peut être téléchargé ici demandé Mar 14 16 à 20:47 J'ai travaillé sur votre projet et le scrollview doesn39t commencer au sommet de la VC, il commence à la fin de la navBar. Seule la plus petite vue devrait commencer là. En outre, vous don39t ont même une classe pour ce VC, vous devez l'ajouter et l'ensemble de la vue a chargé la hauteur scrollview que vous voulez. Pour être honnête, je vous recommande de commencer un nouveau tutoriel à partir de zéro parce qu'il ya quelques choses manquantes dans votre projet et sera plus rapide. Prenez soin) ndash Victor Rius Mar 22 16 à 13: 26Starting dans iOS7, les contrôleurs de vue utilisent la mise en page plein écran par défaut. Dans le même temps, vous avez plus de contrôle sur la façon dont il expose ses vues, et thats fait avec ces propriétés: Fondamentalement, avec cette propriété, vous définissez les côtés de votre vue peut être étendu pour couvrir l'écran entier. Imaginez que vous poussez un UIViewController dans un UINavigationController. Lorsque la vue de ce contrôleur de vue est disposée, elle débutera où la barre de navigation se termine, mais cette propriété définit les côtés de la vue (haut, gauche, bas, droite) qui peuvent être étendus pour remplir l'écran entier. Laissons le voir avec un exemple: Ici, vous ne définissez pas la valeur de edgesForAxtendedLayout. Donc la valeur par défaut est prise (UIRectEdgeAll), de sorte que la vue étend sa mise en page pour remplir l'écran entier. Ceci est le résultat: Comme vous pouvez le voir, le fond rouge s'étend derrière la barre de navigation et la barre d'état. Maintenant, vous allez définir cette valeur sur UIRectEdgeNone. Vous indiquez au contrôleur de vue de ne pas étendre la vue pour couvrir l'écran: Cette propriété est utilisée lorsque votre vue est un UIScrollView ou similaire, comme un UITableView. Vous voulez que votre table commence où la barre de navigation se termine, parce que vous ne verrez pas le contenu entier sinon, mais en même temps, vous voulez que votre table couvre l'ensemble de l'écran lors du défilement. Dans ce cas, l'ajustement de edgesForAxtendedLayout à None ne fonctionnera pas car votre table commencera à défiler où la barre de navigation se termine et elle ne va pas derrière elle. Voici où cette propriété est pratique, si vous laissez le contrôleur de vue automatiquement ajuster les encarts (en mettant cette propriété à OUI, également la valeur par défaut), il ajoutera inséré au haut de la table, de sorte que la table commencera où la navigation Bar, mais le défilement couvrira l'écran entier. C'est alors qu'est réglé sur NON: Et OUI (par défaut): Dans les deux cas, la table défile derrière la barre de navigation, mais dans le deuxième cas (OUI), elle commencera en dessous de la barre de navigation. Cette valeur est juste un ajout aux précédentes. Si la barre d'état est opaque, les vues ne seront pas étendues pour inclure la barre d'état trop, à moins que ce paramètre soit OUI. Donc, si vous étendez votre vue pour couvrir la barre de navigation (edgeForExtendedLayout à UIRectEdgeAll) et le paramètre est NO (par défaut), il ne couvrira pas la barre d'état si son opaque. Si quelque chose n'est pas clair, écrire un commentaire et réponse mal à elle. Comment iOS sait ce que UIScrollView à utiliser iOS saisit la première sous vue dans votre vue viewcontrollers, donc celle de l'index 0, et si c'est une sous classe de UIScrollView applique alors les propriétés expliquées à elle. Bien sûr, cela signifie que UITableViewController fonctionne par défaut (puisque l'UITableView est la première vue).
No comments:
Post a Comment