Гравитация просмотра изображений Android

Как я могу динамически установить гравитацию?

Bitmap bmp;
im = new ImageView (this);
bmp=getbmp(img);
im.setImageBitmap(bmp);  

Теперь я хотел бы поставить изображение в верхней части. Как я могу сделать это без android:gravity в main.xml?

РЕДАКТИРОВАТЬ :

main.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:scrollbars="vertical"

    >
</ScrollView>

У меня есть макет кадра, и я добавляю к нему изображение, а затем текст, и я хотел бы, чтобы изображение было в верхней части экрана.

FrameLayout fm = new FrameLayout (this);
fm.addView(im);
fm.addView(fin); // fin = the text view
setContentView(fm);

person Teo    schedule 03.10.2011    source источник
comment
Больше информации, пожалуйста. Выложите файл макета.   -  person Michell Bak    schedule 03.10.2011
comment
Есть ли причина, по которой вы просто не помещаете ImageView в файл макета?   -  person Michell Bak    schedule 03.10.2011
comment
Ну, во-первых, если я поместил представление изображения в файл макета внутри ScrollView, приложение вылетает, причина в том, что у выбранного дочернего элемента уже есть родитель. Во-вторых, у меня есть текстовое представление и изображение, поэтому я хотел бы создать их динамически.   -  person Teo    schedule 03.10.2011
comment
Да, вы должны поместить ImageView в дочерний элемент ScrollView. ScrollView может иметь только одного дочернего элемента, то есть LinearLayout или RelativeLayout. Это не должно быть проблемой.   -  person Michell Bak    schedule 03.10.2011
comment
Итак, вы говорите создать LinearLayout внутри ScrollView и внутри LinearLayout, чтобы поместить текст и изображения?   -  person Teo    schedule 03.10.2011


Ответы (5)


Используйте ImageView.setScaleType() с ImageView.ScaleType.FIT_START в качестве значения.

person Mahdi Hijazi    schedule 03.10.2011
comment
Извините, это так: im.setScaleType(ImageView.ScaleType.FIT_START); - person Mahdi Hijazi; 03.10.2011
comment
Спасибо, это работает, но почему текст помещается поверх изображения? Что я могу сделать ? - person Teo; 03.10.2011
comment
код: FrameLayout fm = new FrameLayout (this); fm.addView(im); fm.addView(fin); setContentView(fm); fin это textView - person Teo; 03.10.2011

Вы можете поместить ImageView внутри LinearLayout и использовать setLayoutParams LinearLayout, чтобы установить гравитацию макета.

person Hemant Sharma    schedule 03.10.2011

Вы можете попробовать этот код, если он может помочь вам в xml-файле.

<GridView android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:id="@+id/gallerylistactivity_gallery"
    android:columnWidth="90dp" android:numColumns="4"
    android:verticalSpacing="5dp" android:horizontalSpacing="10dp"
    android:gravity="center" android:stretchMode="spacingWidth"/>

.java-файл

открытый класс GalleryListAdapter расширяет BaseAdapter{

private Context mContext;

private Integer[] mImageIds = { R.drawable.gallery_01,
        R.drawable.gallery_02, R.drawable.gallery_03,
        R.drawable.gallery_04, R.drawable.gallery_05,
        R.drawable.gallery_06, R.drawable.gallery_07,
        R.drawable.gallery_08, R.drawable.gallery_10,
        R.drawable.gallery_09 };

public GalleryListAdapter(Context c) {
    this.mContext = c;

}

@Override
public int getCount() {
    return mImageIds.length;

}

@Override
public Object getItem(int position) {
    return position;
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    ImageView imageView = new ImageView(mContext);
    imageView.setImageResource(mImageIds[position]);
    imageView.setLayoutParams(new GridView.LayoutParams(100, 100));
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setPadding(3, 3, 3, 3);

    return imageView;

}
person Girish Patel    schedule 03.10.2011

См. «http://developer.android.com/reference/android/widget/ImageView.ScaleType.html».

person Bai    schedule 03.10.2011

Попробуй это:

Bitmap bmp;    
ImageView img= new ImageView (this);       
bmp=BitmapFactory.decodeResource(getResources(), R.drawable.icon);      
img.setImageBitmap(bmp);             
img.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT,                       
                  LayoutParams.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL));
mLinearLayout.addView(img);

Обратите внимание, что вам нужно установить ширину и высоту изображения в FrameLayout.LayoutParams(width,height,gravity) в соответствии с тем, какую гравитацию вы хотите установить.

person Hiral Vadodaria    schedule 03.10.2011