Ответ 1
Используйте ImageView.setScaleType()
с ImageView.ScaleType.FIT_START
качестве значения.
Как я могу динамически установить гравитацию?
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);
Используйте ImageView.setScaleType()
с ImageView.ScaleType.FIT_START
качестве значения.
Вы можете поместить ImageView внутри LinearLayout и использовать setLayoutParams LinearLayout для установки гравитации макета.
Вы можете попробовать этот код, если можете помочь вам 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;
}
См. "http://developer.android.com/reference/android/widget/ImageView.ScaleType.html".
Попробуйте следующее:
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(ширина, высота, плотность) в зависимости от того, какую гравитацию вы хотите установить.