我需要将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 连续显示它们,从屏幕的左边缘开始......但我没有到达正确的边距。
有没有办法可以拉伸每个瓷砖以适应屏幕的宽度,而无需定义每个图像视图的宽度(以像素为单位)?
答案 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_CROP
或FIT_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个图像) 然后乘以图像的高度/宽度比。这应该可以保持您的图像规模。