Vue dans le ScrollView n'est pas de correspondance parent tel qu'il est configuré
J'ai un ViewPager et une ActionBar avec des onglets. L'un de ces onglets a une ListView et quand j'ai appuyer sur l'une des options dans cette Liste, j'ai ajouter un Fragment qui est la vue de détail de la ligne.
Que la vue de détail est un ScrollView avec un LinearLayout à l'intérieur. La ScrollView est match_parent/match_parent
et le LinearLayout à l'intérieur, il est width=match_parent
et height=wrap_content
. Sur un téléphone de la taille de l'émulateur, la vue de détail remplit l'écran comme vous le souhaitez, mais sur une tablette, la vue de détail couvre seulement une partie de la largeur de l'écran... même si la largeur de la ScrollView et la largeur de la LinearLayout sont à la fois match_parent.
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rootView" style="@style/RootScrollView">
<LinearLayout android:id="@+id/scrollContentView" style="@style/ScrollViewContent">
...
</LinearLayout>
</ScrollView>
Ici est le style pour le défilement de l'affichage:
<style name="RootScrollView">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
</style>
Ici est le style du contenu LinearLayout:
<style name="ScrollViewContent">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:paddingLeft">15dp</item>
<item name="android:paddingRight">15dp</item>
<item name="android:orientation">vertical</item>
<item name="android:background">@drawable/image_legal_paper_tile</item>
</style>
L'affichage du contenu a une répétition de fond image_legal_paper_tile
qui est-ce:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/legal_paper_tile"
android:gravity="fill_horizontal"
android:tileMode="repeat" />
Ainsi, l'image devrait s'étirer horizontalement et répéter ce qui crée un jaune juridique de papier pad à l'arrière-plan.
C'est ce que la liste et la vue de détail ressembler à l'émulateur de téléphone:
C'est ce que la liste et le détail de la vue comme sur une vraie tablette. Le jaune juridique pad fragment DOIT remplir toute la largeur de l'écran, mais il ne l'est pas.
EDIT:
Ici est l'arrière-plan de papier légal de l'image:
C'est 320px de large. L'émulateur de téléphone est 480px de large et l'image s'étire, correctement, pour remplir la largeur de l'écran. Il répète ensuite à la verticale comme prévu. Cependant, il n'est pas d'étirement pour remplir la largeur de l'écran sur la tablette.
La largeur indiquée sur la tablette n'est PAS la taille d'origine de l'image, parce qu'il change de taille en fonction du contenu. Lorsque le fragment de la première charge, il est l'un de largeur. Puis-je remplir les champs et exécuter le calcul qui ajoute du texte au bas de l'affichage du contenu. Que le texte est plus large que le contenu existant, et donc quand le texte est de définir la largeur du fragment augmente à l'appui de l'ensemble du contenu.
Donc, en bref, non, la largeur de la tablette n'est pas la taille d'origine de l'image. L'image EST d'étirement, juste ne pas étirer tout le chemin.
- Utilisez seulement une mise en page pour toutes les tailles de couches? Quelle est la taille de votre image d'arrière-plan? Est l'image d'arrière-plan de la taille de ce qui est vu sur la tablette? Alors il peut être une tuile répéter (pour que peut-être vérifier ce link).
- La largeur indiquée sur la tablette n'est PAS la taille d'origine de l'image, parce qu'il change de taille en fonction du contenu. Lorsque le fragment de la première charge, il est l'un de largeur. Puis-je remplir les champs et exécuter le calcul qui ajoute du texte au bas de l'affichage du contenu. Que le texte est plus large que le contenu existant, et donc quand le texte est de définir la largeur du fragment augmente à l'appui de l'ensemble du contenu.
- si vous avez utilisé la disposition de la marge linéaire de la mise en page de défilement de l'enfant, vous devez modifier le rembourrage pour les travaux la vraie.
Vous devez vous connecter pour publier un commentaire.
Sur la ScrollView utilisation
android:fillViewport="true"
et pour les enfants de la ScrollViewandroid:height="wrap_content"
. Si vous voulez d'avoir beaucoup d'enfant avec différents attributs d'un principal de l'enfant en tant que contenant. Définir commewrap_content
et de son enfant commematch_parent
.exemple :
Dans cet exemple, j'pouvez définir la visibilité dans le code, pour chaque enfant, et il sera en adéquation avec des parents comme vous le souhaitez .
Essayez d'ajouter android:fillViewport="true"pour votre ScrollView
rappelez-vous que android:layout_height=”fill_parent” signifie “jeu de la hauteur à la hauteur de la mère.” Ce n'est évidemment pas ce que vous voulez lors de l'utilisation d'un ScrollView. Après tout, la ScrollView deviendrait inutile si son contenu était toujours aussi grand que lui-même. Pour contourner ce problème, vous devez utiliser la ScrollView attribut appelé android:fillViewport. Lorsque la valeur est true, cet attribut provoque le défilement de la vue de l'enfant, de l'étendre à la hauteur de la ScrollView si nécessaire. Lorsque l'enfant est plus grand que la ScrollView, l'attribut n'a aucun effet.
J'ai trouvé une solution de contournement, mais je ne les accepte pas cette réponse et j'espère que quelqu'un va trouver la vraie réponse.
Dans ma liste vue fragment, le onListItemClick() gestionnaire, j'ai mis un couple de propriétés (minWidth et minHeight) sur le détail fragment. Puis, dans la onCreateView() la méthode de détail fragment, j'ai mis le minimum de la largeur et de la hauteur de cette valeur.
Le détail fragment ensuite correctement remplit l'espace et permet encore de défilement, etc.