Comment faire de grille-vue défilement horizontal dans android
J'ai écrit du code pour gridview dans lequel je peux afficher l'image et le texte, mais je veux montrer toute image unique de défilement ligne comme Impulsion de nouvelles applications.
J'ai mis en œuvre horizontalscroll-vue pour gridview en xml, mais il ne fonctionne pas du tout.
Je suis à l'aide de pageviwer pour les onglets et je suis à l'aide de fragments.
Voici mon code xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<HorizontalScrollView
android:id="@+id/horizontalScrollView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:scrollbars="horizontal" >
<GridView
android:layout_width="500dp"
android:layout_height="400dp"
android:id="@+id/gridview"
android:columnWidth="300dp"
android:numColumns="3"
android:horizontalSpacing="10dp"
android:scrollbars="horizontal">
</GridView>
</HorizontalScrollView>
</RelativeLayout>
Voici mon image adapteur code
public class ImageAdapter extends BaseAdapter {
private Context context;
private final String[] mobileValues;
private TextView t;
public ImageAdapter(Context context, String[] mobileValues) {
this.context = context;
this.mobileValues = mobileValues;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if (convertView == null) {
gridView = new View(context);
//get layout from mobile.xml
gridView = inflater.inflate(R.layout.showlist_item, null);
//set value into textview
TextView textView = (TextView) gridView
.findViewById(R.id.grid_item_label);
textView.setText(mobileValues[position]);
//set image based on selected text
ImageView imageView = (ImageView) gridView
.findViewById(R.id.grid_item_image);
String mobile = mobileValues[position];
if (mobile.equals("Windows")) {
imageView.setImageResource(R.drawable.test_play_image);
} else if (mobile.equals("iOS")) {
imageView.setImageResource(R.drawable.test_play_image);
} else if (mobile.equals("Blackberry")) {
imageView.setImageResource(R.drawable.test_play_image);
} else {
imageView.setImageResource(R.drawable.test_play_image);
}
} else {
gridView = (View) convertView;
}
return gridView;
}
private void clickedButton(TextView tv){
int num = Integer.parseInt(tv.getText().toString());
++num;
tv.setText(Integer.toString(num));
}
private void clickedButtonm(TextView tv){
int num = Integer.parseInt(tv.getText().toString());
if(num>0){
--num;
tv.setText(Integer.toString(num));
}
}
public int getCount() {
return mobileValues.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
class MyOnClickListener implements OnClickListener{
public final TextView tv;
public MyOnClickListener(TextView tv){
this.tv=tv;
}
public void onClick(View v) {
//TODO Auto-generated method stub
clickedButton(tv);
}
}
class MyOnClickListenerm implements OnClickListener{
public final TextView tv;
public MyOnClickListenerm(TextView tv){
this.tv=tv;
}
public void onClick(View v) {
//TODO Auto-generated method stub
clickedButtonm(tv);
}
}
Je veux afficher comme ceci défilement à droite.
- Les gars quelqu'un sait de toute solution pour cela?
- Double Possible de le défilement Horizontal de la grille de vue
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé Les deux sens GridView utiles sur github.
Il a quelques méthodes:
scrollDirectionPortrait (vertical | horizontal)
scrollDirectionLandscape (vertical | horizontal)
etc
Il y a une belle solution dans Android à partir de maintenant (comme Zainodis a dit dans son commentaire ) : HorizontalGridView.
1. Gradle dépendance
2. L'ajouter dans votre mise en page
your_activity.xml
3. Grille de mise en page de l'élément
Créer une mise en page pour votre élément de grille ( grid_element.xml ). J'ai créé un simple avec un seul bouton en elle.
4. Créer un adaptateur
Très inspiré par ce lien : https://gist.github.com/gabrielemariotti/4c189fb1124df4556058
5. L'initialiser dans votre activité :
horizontalGridView.setNumRows(2);
il fera aussi de la grille de infinitly défilement dans la direction verticale. Réglage de la hauteur de ligne n'aide pas.<uses-feature android:name="android.software.leanback" android:required="false"/>
pour résoudre ce problème. Je suis à l'aide v17:23.2.1@+id/linearLayout_gridtableLayout
sera égal denumColumns * columnWidth + gridView padding
Il est un meilleur travail plus propre solution que j'ai testé sans aucune sorte d'extra dépendances juste de changer votre configuration xml quelque chose de similaire comme ci-dessous .
Aussi setSpan de comptage en fonction de vos besoins lors de l'attribution de la Grille de mise en page manager.
Je ne pense pas que gridviews peut être faite défilement horizontal. Android a fourni galleryView à cette fin. Vous pouvez l'utiliser. Voici un thead qui peuvent vous aider à prendre galleryView de travail horizontale gridview:-
Le défilement Horizontal dans android gridview
La bibliothèque Android-DraggableGridViewPager par Justin(zzhouj)
Offre les fonctionnalités suivantes
cliquez sur, élément clic long, réorganiser.
M'a aidé à créer un défilement horizontal-mesure de la grille avec des indicateurs de page, j'espère que ça aide quelqu'un essaie de mettre en place quelque chose de similaire.
Pour un petit ensemble de données, d'une amende route serait d'utiliser une mise en page comme ci-dessous pour votre conteneur:
une mise en page différente pour vos éléments de liste (list_item.xml):
puis par programmation à l'ajout de vues comme nécessaires:
En faisant cela, vous ne sont pas plus à l'aide d'un adaptateur. Si vous avez vraiment besoin d'utiliser un adaptateur, vous devez utiliser un ViewPager, il y a plein d'info pour le faire dans android documentation, ou vous pouvez commencer ici dans StackOverflow:
À l'aide de viewpager dans mon application
android viewPager mise en œuvre
Il vous plaît demander pour plus d'info si j'ai manqué de n'importe quel point de retour.