0

我需要将 10 个 ImageView 并排放置(在水平行中),它​​们需要从左到右填满整个屏幕。所以如果屏幕的总宽度是 100px,那么每个 ImageView 的宽度都是 10px。让我们忽略每个 ImageView 的高度。

在世界上,我怎么能用dp价值而不是 pixels用价值来实现呢?我在每个 ldpi、mdpi 和 hdpi 文件夹中放置了一个 .jpg 图像,每个图像的尺寸都与这个人的回答有关:请参阅此处

我试过这样做:

<ImageView 
  android:id="@+id/caca1" 
  android:src="@drawable/tile_11" 
  android:layout_width="wrap_content"  
  android:layout_height="wrap_content" />
<ImageView 
  android:id="@+id/caca2" 
  android:src="@drawable/tile_11" 
  android:layout_toRightOf="@+id/caca1" 
  android:layout_width="wrap_content"  
  android:layout_height="wrap_content" />

... and so on, 'til the 10th ImageView. Each one is place on the right side of the previous.

上面的代码确实从屏幕的左边距开始连续显示它们......但我没有到达右边距。

有没有一种方法可以拉伸每个图块以适应屏幕的宽度,而无需以像素为单位定义每个图像视图的宽度?

4

3 回答 3

1

您想使用 aLinearLayout水平显示它们:

<LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal">
  <ImageView
    android:layout_width="0"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:src="@drawable/image" />
  <ImageView
    android:layout_width="0"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:src="@drawable/image2" />
  etc..
</LinearLayout>

如果layout_weight每个 的 相同ImageView,它们在 中的大小将相同LinearLayout

于 2012-07-12T15:21:53.360 回答
1

将图像宽度设置为 0,权重设置为 1,并将它们的比例类型设置为CENTER_CROPFIT_XY

<ImageView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:src="@drawable/image"
    android:scaleType="CENTER_CROP" />
于 2012-07-12T15:53:44.820 回答
1

关于动态调整高度,我认为您必须在 Acivitities OnCreate() 中以编程方式执行此操作:

对于每个图像:

// image layout adjustment
LayoutParams lp = mImage.getLayoutParams();
float width = (float)mImage.getDrawable().getIntrinsicWidth();
int height = (int)(((float)mContext.getWindowManager().getDefaultDisplay().getWidth() / 10.0f) * ((float)mImage.getDrawable().getIntrinsicHeight() / width));

lp.height = height;
mImage.setLayoutParams(lp);

高度 = 屏幕宽度 / 10(因为假设 0 边距,您有 10 张图像)然后乘以图像的高度/宽度之比。这应该使您的图像保持比例。

于 2012-07-12T16:17:28.543 回答