J'ai déjà vu un autre article lié à ce sujet avant de publier cette question, donc je peux certainement dire que cette question n'est pas un doublon. J'ai un problème différent que je n'ai pas pu résoudre ni trouver de solution.
Problème: J'ai créé une barre de recherche verticale en utilisant la nouvelle
SeekBar
ne remplit pas la hauteur de l'écran. J'ai fait pivoter la vue SeekBar
avec 90 degrés et j'ai essayé de définir la height: match_parent
et la width: wrap_content
mais cela ne fonctionne pas du tout comme J'esperais. J'ai donc réglé la hauteur sur une valeur codée en dur et cela avait l'air bien. Le seul problème est que je vais devoir vérifier la hauteur de la vue dans laquelle elle est peuplée et définir la hauteur de la SeekBar
de manière problématique, ce que je veux éviter.
slider.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#fff" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context=".MainActivity" tools:showIn="@layout/app_bar_main"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <RelativeLayout android:layout_weight="1" android:layout_width="match_parent" android:layout_height="match_parent"> <include layout="@layout/maingrid" android:background="@color/colorAccent" android:layout_centerInParent="true" android:layout_width="match_parent" android:layout_height="match_parent"/> <LinearLayout android:background="@android:color/transparent" android:layout_centerInParent="true" android:id="@+id/radarCanvas" android:layout_width="300dp" android:layout_height="300dp" android:orientation="vertical"> </LinearLayout> <include android:layout_alignParentBottom="true" layout="@layout/biosignals" android:layout_width="match_parent" android:layout_height="wrap_content" /> <!--- this is where i am including slider layout --> <include android:layout_alignParentRight="true" layout="@layout/slider" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_margin="24dp" /> </RelativeLayout> </LinearLayout> </android.support.constraint.ConstraintLayout>
Mise à jour
Merci Reaz pour votre réponse
content_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/slider" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/roundcorner" android:backgroundTint="@color/design_default_color_primary" android:gravity="center" android:layout_gravity="center" android:elevation="5dp" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textAlignment="center" android:textColor="#fff" android:text="@string/RangeValue" android:paddingTop="16dp" android:paddingBottom="16dp"/> <FrameLayout android:layout_weight="1" android:background="#fff" android:layout_width="match_parent" android:layout_height="match_parent"> <SeekBar android:id="@+id/seeker" android:layout_width="wrap_content" <!-- Set this to 400dp and it looks fine --> android:layout_height="match_parent" android:rotation="270" android:layout_gravity="center"/> </FrameLayout> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_round_done_24px" android:layout_gravity="center" android:padding="16dp" /> </LinearLayout>
3 Réponses :
Vous définissez le poids à l'intérieur du Framelayout lorsque l'orientation est verticale et en même temps la hauteur de FrameLayout est définie sur match_parent. Si vous réglez ainsi, le poids n'aura aucun effet. Essayez de régler la hauteur sur 0dp , cela fonctionnera à coup sûr.
<FrameLayout android:layout_weight="1" android:background="#fff" android:layout_width="match_parent" android:layout_height="0dp"> <SeekBar android:id="@+id/seeker" android:layout_width="wrap_content" // set this to 400dp and it looks fine android:layout_height="match_parent" android:rotation="270" android:layout_gravity="center"/> </FrameLayout>
Ceci est mon résultat
Veuillez jeter un œil à l'image ci-dessus, votre mise en page ressemble-t-elle à l'image ci-dessus?
Essayez de déplacer la SeekBar, s'il vous plaît.
Vous devez vous débarrasser de votre FrameLayout
qui limite la largeur de la SeekBar
. J'ai essayé d'implémenter la mise en page comme suit et je pense qu'elle devrait également s'adapter à votre cas.
Une autre chose importante que vous devriez remarquer est qu'en raison de votre rotation, la largeur et la hauteur sont interchangées dans la vue de votre SeekBar
. J'ai donc créé le layout_width = "match_parent"
. J'espère que ça t'as aidé!
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/slider" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:elevation="5dp"> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="30dp" android:padding="16dp" android:text="100" android:textAlignment="center" /> <SeekBar android:id="@+id/seeker" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_gravity="center" android:rotation="270" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="20dp" android:padding="16dp" android:src="@android:drawable/star_on" /> </RelativeLayout>
Voici le résultat que j'ai obtenu.
donc même si nous modifions la rotation, la hauteur de la barre de recherche ne changera pas à moins que nous changions la largeur. Est-ce exact?
Vous le faites pivoter de 270 degrés, ce qui traduit également la hauteur et la largeur dans cet angle. Par conséquent, pour couvrir la région verticale, vous devez modifier la largeur. Faites-moi savoir si cela résout votre problème. :)
@ReazMurshed Merci :) Votre solution fonctionne mais je rencontrais quelques problèmes et j'essayais de les réparer avant de revenir vers vous. Je n'ai pas pu les réparer, alors je demande à nouveau votre aide - (1) Pour le moment, ce curseur prend le plein écran au lieu de s'asseoir bien (2) Mon icône et mon texte viennent au-dessus du curseur, je ne sais pas comment vous avez réussi à le faire. Je vais mettre à jour mon message. Vérifiez s'il vous plaît.
Chose sûre. Je vérifierai dès que possible.
J'obtiens le résultat que j'ai montré dans l'image où le curseur est petit avec votre mise en page mise à jour. Avec une disposition relative, au moins j'obtenais la pleine hauteur du curseur, mais lenearlayout me donne mon résultat précédent comme indiqué dans ma première image.
Je vois. Laissez-moi essayer avec le RelativeLayout
alors.
J'ai essayé d'ajouter une marge supérieure et inférieure à TextView
et à ImageView
. Veuillez vérifier le code mis à jour.
Le problème est donc que la disposition relative prend tout l'écran horizontalement. Vous pouvez vérifier en définissant la couleur d'arrière-plan sur une couleur au lieu de aucune couleur qui se trouve essentiellement au-dessus d'une autre mise en page et la rend non cliquable. J'inclus slider.xml dans content_main.xml dans un Relativelayout, veuillez vérifier dans le post, qui héberge essentiellement trois mises en page gridview, canvas (linearlayout) et slider.xml. J'ai une mise en page relative amusante dans content_main.xml parce que je veux que le canevas et la grille soient placés l'un sur l'autre tandis que le curseur doit être placé à droite au lieu de prendre tout l'écran.
<RelativeLayout android:layout_width="400dp" android:layout_height="200dp" android:layout_gravity="center"> <SeekBar android:layout_width="400dp" android:layout_height="match_parent" android:layout_gravity="center" android:maxHeight="4dp" android:minHeight="4dp" android:progress="50" android:progressDrawable="@drawable/custom_seek_bar" android:rotation="270" android:thumb="@drawable/seekbar_thumb" /> </RelativeLayout> Use this code, you will get desired result
Jetez un œil à stackoverflow.com/questions/3333658/…
Veuillez vérifier ma réponse ci-dessous.