繁体   English   中英

中心ImageView

[英]Center ImageView

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

<?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);

            }

由于某种原因,图像未居中,我尽了最大努力,但似乎缺少。

在此处输入图片说明

尝试这个..

移除重力,然后添加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);

您的相对布局设置为:

<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设置为居中,以便“相对布局”在滚动视图中居中。

尝试使用

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

代替

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

并注释掉以编程方式居中显示图像的逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM