动态加载的ImageView不居中

时间:2017-10-24 00:57:28

标签: android android-layout

我在用户从Dose Type微调器中选择一个项目后动态加载一些信息。信息位于主屏幕底部的相对布局内。

相对布局具有基于微调器中所选项目动态加载的图像视图。使用毕加索调整图像大小。 看起来使用毕加索进行大小调整会导致问题,但离不开......因为原始图像太大了。

图像视图不居中......无论如何,它始终显示在相对布局的左上角。

有问题的imageview是布局中的第二个... id为id + + id / imgDoseTypeInfo

请帮忙

screenshot         

        <ImageView
            android:id="@+id/imgHelpIcon_AddDrugActivity"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:src="@drawable/ic_help"/>

        <TextView
            android:id="@+id/lblDoseTypeName_AddDrugActivity"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="sample text"
            android:gravity="center"
            android:layout_toRightOf="@+id/imgHelpIcon_AddDrugActivity"
            android:textColor="@color/normaltextcolor"
            android:layout_alignBaseline="@+id/imgHelpIcon_AddDrugActivity"
            android:textStyle="bold"/>

        <TextView
            android:id="@+id/lblDoseTypeDesc_AddDrugActivity"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/lblDoseTypeName_AddDrugActivity"
            android:layout_alignLeft="@+id/imgHelpIcon_AddDrugActivity"
            android:text="@string/pediatric_calc_info"
            android:textColor="@color/normaltextcolor"
            android:layout_marginBottom="10dp"/>

        <ImageView
            android:id="@+id/imgDoseTypeInfo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/imgHelpIcon_AddDrugActivity"
            android:layout_centerHorizontal="true" />

    </RelativeLayout>


cmbDosageType.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            selectedDoseType = (DosageType) parent.getItemAtPosition(position);

            lyDoseTypInfo.setVisibility(View.VISIBLE);

            LoadDoseTypeInfo(selectedDoseType.getCalcType(), selectedDoseType.name);


        }
    });

    private void LoadDoseTypeInfo(String calcType, String doseName) {

    String doseDesc = "";

    switch (calcType) {

        case "vol_liquid":

            doseDesc = getResources().getString(R.string.vol_liquid_info);
            break;
        case "num_tablets":

            doseDesc = getResources().getString(R.string.num_tablets_info);
            break;
        case "pediatric_calc":

            doseDesc = getResources().getString(R.string.pediatric_calc_info);
            break;
        case "dose_bodyweight_tablet":

            doseDesc = getResources().getString(R.string.dose_bodyweight_info);
            break;
        case "dose_bodyweight_liquid":

            doseDesc = getResources().getString(R.string.dose_bodyweight_info);
            break;
        case "dose_bodyweight_unit":

            doseDesc = getResources().getString(R.string.dose_bodyweight_info);
            break;

    }

    lblDoseTypeName.setText(doseName);
    lblDoseTypeDesc.setText(doseDesc);

    Picasso.with(getApplicationContext())
            .load(R.drawable.vol_liquid)
            .resize(600,600)
            .into(imgDoseTypeInfo);


}

3 个答案:

答案 0 :(得分:0)

  • android:layout_centerInParent="true"用作ImageView的属性。

  • 删除代码中的android:layout_below="@+id/imgHelpIcon_AddDrugActivity"

试试这个。

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

    <ImageView
        android:id="@+id/imgHelpIcon_AddDrugActivity"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:src="@drawable/ic_help"/>

    <TextView
        android:id="@+id/lblDoseTypeName_AddDrugActivity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/imgHelpIcon_AddDrugActivity"
        android:layout_toRightOf="@+id/imgHelpIcon_AddDrugActivity"
        android:gravity="center"
        android:text="sample text"
        android:textColor="@color/normaltextcolor"
        android:textStyle="bold"/>

    <TextView
        android:id="@+id/lblDoseTypeDesc_AddDrugActivity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/imgHelpIcon_AddDrugActivity"
        android:layout_below="@+id/lblDoseTypeName_AddDrugActivity"
        android:layout_marginBottom="10dp"
        android:text="@string/pediatric_calc_info"
        android:textColor="@color/normaltextcolor"/>

    <ImageView
        android:id="@+id/imgDoseTypeInfo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"/>

</RelativeLayout>

答案 1 :(得分:0)

如果您使用<RelativeLayout>,请使用以下代码将图片置于父版面的中心

<ImageView
        android:id="@+id/imgDoseTypeInfo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="centerInside"
        android:gravity="center"
        android:layout_centerInParent="true"/>

答案 2 :(得分:0)

我认为你的相对布局宽度不匹配,父母需要更多的澄清才能尝试以下代码android:layout_centerHorizo​​ntal =“true”

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content">

<ImageView
    android:id="@+id/imgHelpIcon_AddDrugActivity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="left"
    android:layout_marginStart="10dp"
    android:src="@mipmap/ic_launcher_round"/>

<TextView
    android:id="@+id/lblDoseTypeName_AddDrugActivity"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="sample text"
    android:gravity="center"
    android:layout_marginTop="5dp"
    android:textColor="#313131"
    android:layout_toEndOf="@+id/imgHelpIcon_AddDrugActivity"
    android:textStyle="bold"/>

<TextView
    android:id="@+id/lblDoseTypeDesc_AddDrugActivity"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_toEndOf="@+id/imgHelpIcon_AddDrugActivity"
    android:layout_below="@+id/lblDoseTypeName_AddDrugActivity"
    android:text="pediatric_calc_info"
    android:textColor="#313131"
    android:layout_marginBottom="10dp"/>

<ImageView
    android:id="@+id/imgDoseTypeInfo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@mipmap/ic_launcher_round"
    android:layout_below="@+id/imgHelpIcon_AddDrugActivity"
    android:layout_centerHorizontal="true" />

</RelativeLayout>