Android系统。放置ImageViews

时间:2012-07-12 15:17:07

标签: android imageview

我需要将10个ImageView放在一起(在水平行中),他们需要从左到右填充整个屏幕。因此,如果屏幕的总宽度为100px,则每个ImageView的宽度为10px。让我们忽略每个ImageView的高度。

在世界范围内,我可以使用dp值和 pixels来完成此操作吗?我已经在每个ldpi,mdpi和hdpi文件夹中放置了一个.jpg图像,每个图像都有关于这个人答案的尺寸:see here

我试过这样做:

<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.

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

有没有办法可以拉伸每个瓷砖以适应屏幕的宽度,而无需定义每个图像视图的宽度(以像素为单位)?

3 个答案:

答案 0 :(得分:1)

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

<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内的{{1}}大小相同。

答案 1 :(得分:1)

将图片宽度设置为0,将权重设置为1,并将scale types设置为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" />

答案 2 :(得分: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个图像) 然后乘以图像的高度/宽度比。这应该可以保持您的图像规模。