Comment Augmenter la taille de l'Image Vue dans Android
Je suis en train de travailler sur un projet qui m'oblige à mettre en œuvre deux de défilement horizontale vues avec un d'affichage de l'image entre. Je voudrais étendre la taille de l'affichage de l'image pour remplir l'écart entre le défilement de l'affichage. Je suis allé à travers l'exemple de code, mais il ne semble pas parler de n'importe où dans la taille de l'affichage de l'image. J'ai joint le code ci-dessous après l'Image décrivant mon problème.
public class Gallery2DemoActivity extends Activity {
private Gallery gallery,gallery1;
private ImageView imgView;
private Integer[] Imgid = {
R.drawable.a_1, R.drawable.a_2, R.drawable.a_3, R.drawable.a_4, R.drawable.a_5, R.drawable.a_6, R.drawable.a_7
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gallery = (Gallery) findViewById(R.id.examplegallery);
gallery.setAdapter(new AddImgAdp(this));
gallery1 = (Gallery)findViewById(R.id.examplegallery1);
gallery1.setAdapter(new AddImgAdp(this));
imgView = (ImageView)findViewById(R.id.ImageView01);
imgView.setImageResource(Imgid[0]);
gallery.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
imgView.setImageResource(Imgid[position]);
}
});
}
public class AddImgAdp extends BaseAdapter {
int GalItemBg;
private Context cont;
public AddImgAdp(Context c) {
cont = c;
TypedArray typArray = obtainStyledAttributes(R.styleable.GalleryTheme);
GalItemBg = typArray.getResourceId(R.styleable.GalleryTheme_android_galleryItemBackground, 0);
typArray.recycle();
}
public int getCount() {
return Imgid.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imgView = new ImageView(cont);
imgView.setImageResource(Imgid[position]);
imgView.setLayoutParams(new Gallery.LayoutParams(110, 100));
imgView.setScaleType(ImageView.ScaleType.FIT_XY);
imgView.setBackgroundResource(GalItemBg);
return imgView;
}
}
C'est mon principal XML fichier.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Gallery
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/examplegallery"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/ImageView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"/>
<Gallery
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/examplegallery1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Ci-dessous est mon Attributs de fichier:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="GalleryTheme">
<attr name="android:galleryItemBackground" />
</declare-styleable>
</resources>
C'est une belle descriptif de l'image qui montre exactement ce que vous voulez. J'aimerais bien voir ça plus souvent. (+1)
merci @Fuzzical Logique... je veux les lecteurs à comprendre mon problème plus facile et la réponse sera mieux aussi 🙂
Publier vos styleable fichiers.
J'ai juste ajouté le Styleable attributs de fichier. Vous pouvez aller à travers elle.
merci @Fuzzical Logique... je veux les lecteurs à comprendre mon problème plus facile et la réponse sera mieux aussi 🙂
Publier vos styleable fichiers.
J'ai juste ajouté le Styleable attributs de fichier. Vous pouvez aller à travers elle.
OriginalL'auteur | 2012-01-17
Vous devez vous connecter pour publier un commentaire.
Vinner,
Le problème ici, c'est vraiment deux questions:
La taille de l'ImageView est basé sur le parent, ce qui signifie qu'il partage sa largeur et hauteur.
L'Image est redimensionnée pour correspondre à la limite de la dimension (largeur).
La meilleure façon de gérer cela est de définir l'ScaleType de l'ImageView. Il y a un certain nombre de Types de mise à l'Échelle, mais celui que vous voulez probablement, c'est Centre de Culture. Dans le code, ce qui est fait par
view_name.setScaleType(ImageView.ScaleType.CENTER_CROP)
. Vous pouvez aussi le faire en XML pour votre ImageView avec l'attributandroid:scaleType="centerCrop"
. Rappelez-vous, ce sera redimensionner votre Image et de maintenir votre ratio d'aspect, mais il va couper les côtés.Il suffit d'ajouter le au-dessus de l'attribut à votre ImageView dans votre XML, (probablement sous votre layout_weight), et il doit faire ce que vous voulez.
Espère que cette aide,
FuzzicalLogic
Pas de problème. Jetez un oeil à tous les ScaleTypes. Ils sont en fait assez complet. 🙂
Est-il possible de réaliser ce que j'ai mis, sans recadrage de l'image?
Oui, mais l'image être déformée et le ratio d'aspect sera différent. Utiliser un
scaleType
defitXY
. Heads-up, il peut être laid...OriginalL'auteur Fuzzical Logic
allez-vous essayer de code ci-dessous... ?
et si elle ne fonctionne pas, essayez de régler votre galerie de hauteur à certains dp, il va fonctionner.. Merci
si vous ajouter de la hauteur en dp, je ne pense pas qu'elle sera la cause de tout problème.. avez-vous essayé le code ci-dessus.. je pense que cela devrait fonctionner pour vous
L'ajout d'un layout_weight, qui a provoqué l'Horizontale et d'affichage de l'Image pour réduire la taille.
En raison de votre réponse, j'ai été en mesure de combiner le code et de le faire fonctionner. Grâce Ankit
ay ,la Plupart de bienvenue, vous s'il vous plaît télécharger le travail xml disposition, dans votre question, il va aider les autres avec la même question, 🙂
OriginalL'auteur AAnkit
La taille de l'ImageView est basé sur le parent, ce qui signifie qu'il partage sa largeur et sa hauteur. Aussi, l'Image est redimensionnée pour correspondre à la limite de la dimension (largeur).
OriginalL'auteur Adrian Monk
Il ressemble dans la AddImgAdp classe, vous définissez la ImageView hauteur et largeur et spécifiques tailles de pixel.
Personnellement, je mettrais la mise en page comme un RelativeLayout, alignez la première galerie avec le haut, la deuxième galerie avec le fond, nd ont l'ImageView ensemble pour aligner au-dessus de la deuxième galerie. Puis l'image:
Si vous définissez l'ImageView à fill_parent avec un LinearLayout, il remplira au bas de l'écran et la deuxième galerie sera hors de l'écran.
Savons aussi que, en remplissant tout l'espace, vous serez plus susceptibles de déformer l'image. Considérer toutes vos options de redimensionnement: http://developer.android.com/reference/android/widget/ImageView.ScaleType.html
OriginalL'auteur AJcodez