0

我的安卓代码有问题。我有以下代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_layout_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
android:orientation="vertical">

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:layout_centerVertical="true"
    android:src="@drawable/pdf" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/imageView1"
    android:layout_alignLeft="@+id/imageView1"
    android:text="Test-Label"
    android:textColor="@color/red" />

</RelativeLayout>

我想现在将 textview 放置在我的 imageview 中并使用以下代码

ImageView iv = (ImageView) findViewById(R.id.imageView1);

int width = iv.getWidth();
int height = iv.getHeight();

float percentMarginTop  = 58f;
float percentMarginLeft     = 65f;
float percentTextSize   = 3f;

float marginTop     = height / 100f * percentMarginTop;
float marginLeft    = width / 100f * percentMarginLeft;

TextView tv = (TextView) findViewById(R.id.textView1);
tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, Math.round(height / 100f * percentTextSize));
RelativeLayout.LayoutParams lpTv = (RelativeLayout.LayoutParams) tv.getLayoutParams();
lpTv.topMargin = Math.round(marginTop);
lpTv.leftMargin = Math.round(marginLeft);

所以我想用计算出的图像视图的实际宽度和高度的百分比值来定位元素。所以在我看来,元素应该在每个设备上正确定位,而不是携带密度(ldpi,mdpi,xhdpi,......)和屏幕尺寸(小,正常,大,xlarge,......),但位置方便(4") 是正确的,但在平板电脑 (10") 等其他设备上不正确。当我在给定的 ImageView 上处理百分比时,这怎么可能?

4

1 回答 1

0

看起来这是一个愚蠢的初学者错误,我不想看到或想忽略它;)

width / 100 返回的不是 float 值,而是 int 值。然后整个计算由于错误值而失败,该值被相乘。

我更改了我的代码,它现在是一个工作片段

于 2013-08-14T14:42:10.933 回答