安卓图片视图的重力属性

15

我该如何动态地设置重力?

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

现在我想把图片放在顶部。在main.xml中如何做到这一点,而不使用android:gravity?

编辑:

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,我先添加了图片,然后是文字,我希望图片在屏幕顶部。

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

请提供更多信息。请发布您的布局文件。 - Michell Bak
你有没有什么理由不把ImageView直接放在布局文件中? - Michell Bak
首先,如果我将ImageView放在ScrollView中的布局文件中,应用程序会崩溃,原因是所选的子项已经有一个父项。其次,我有一个TextView和一个ImageView,所以我想动态创建它们。 - Teo
是的,你应该将 ImageView 放在 ScrollView 的子视图中。ScrollView 只能有一个子视图 - 即 LinearLayout 或 RelativeLayout。这不应该是个问题。 - Michell Bak
好的,你的意思是在ScrollView内创建一个LinearLayout,在LinearLayout内放置文本和图像视图? - Teo
5个回答

34

使用ImageView.setScaleType()方法,参数传入ImageView.ScaleType.FIT_START


抱歉,代码是这样的:im.setScaleType(ImageView.ScaleType.FIT_START); - Mahdi Hijazi
谢谢,它可以工作了,但为什么它把文本放在图片上面?我该怎么办? - Teo
代码: FrameLayout fm = new FrameLayout(this); fm.addView(im); fm.addView(fin); setContentView(fm); fintextView - Teo

0

如果有帮助的话,您可以尝试这段代码 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 文件

public class GalleryListAdapter extends 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;

}

0

试试这个:

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)中设置ImageView的宽度和高度。

0

您可以将ImageView放置在LinearLayout中,然后使用LinearLayout的setLayoutParams方法来设置布局的重心。


0
请参考"http://developer.android.com/reference/android/widget/ImageView.ScaleType.html"。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接