中心ImageView

时间:2013-11-22 10:59:12

标签: java android android-linearlayout relativelayout

从线性布局和相对布局切换,因为我想获得图像的居中。

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

    <RelativeLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <ImageView
        android:id="@+id/itemItem"
        android:src="@drawable/content_picture"
        android:tag="image_item_grid_image"
        android:layout_width="wrap_content"
        android:background="@drawable/layout_bg"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_gravity="center|center_horizontal"
        android:adjustViewBounds="true"
        android:contentDescription="Desc"
        android:scaleType="fitCenter" />


        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <TextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <RatingBar
            android:id="@+id/ratingBar1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </RelativeLayout >

</ScrollView>

显示图片:

            DisplayMetrics displaymetrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
            int height = displaymetrics.heightPixels;
            int width = displaymetrics.widthPixels;


            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

            params.height = height / 2;
            params.width = width / 2;
            params.setMargins(0, 50, 0, 0);
            //mImageView.get().setImageBitmap(bitmap.get());

            if(bitmap!=null){

            Log.d("#ImageValue: ", ""+bitmap.toString());
            mImageView.get().setImageBitmap(bitmap.get());
            mImageView.get().setLayoutParams(params);

            }

由于某些原因,图像不是居中的,我尽可能多地尝试,但似乎缺乏。

enter image description here

3 个答案:

答案 0 :(得分:1)

试试这个..

删除重力添加android:layout_centerHorizontal="true"android:layout_centerVertical="true"

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <RelativeLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <ImageView
        android:id="@+id/itemItem"
        android:src="@drawable/content_picture"
        android:tag="image_item_grid_image"
        android:layout_width="wrap_content"
        android:background="@drawable/layout_bg"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:adjustViewBounds="true"
        android:contentDescription="Desc"
        android:scaleType="fitCenter" />


        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <TextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <RatingBar
            android:id="@+id/ratingBar1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </RelativeLayout >

</RelativeLayout>

修改

在你的参数中添加以下行

params.addRule(RelativeLayout.CENTER_VERTICAL,RelativeLayout.TRUE);
params.addRule(RelativeLayout.CENTER_HORIZONTAL,RelativeLayout.TRUE);

答案 1 :(得分:0)

您的相对布局设置为:

<RelativeLayout 
    android:layout_width="wrap_content" // will not fill parent so children will centre in relative layout, not the whole view
    android:layout_height="wrap_content"
    android:orientation="vertical" > 

您应该将相对布局设置为填充父级的宽度和高度,或者将“滚动视图”layout_gravity设置为居中,以便相对布局居中在滚动视图中。

答案 2 :(得分:0)

尝试使用

<RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"

而不是

<RelativeLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"

并以编程方式注释逻辑以使图像视图居中。