我正在尝试将图像居中,并使其达到屏幕宽度的50%。我尝试使用权重为线性的布局,如下所示:
<LinearLayout
android:baselineAligned="false"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="100">
<ImageView
android:id="@+id/imageView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:contentDescription="@string/additionContent"
app:srcCompat="@drawable/ic_additivecolor"
android:layout_weight="50"/>
</LinearLayout>
这正确设置了宽度,我知道如何居中,但高度与父项匹配。如果将高度设置为wrap_content
,则图像会变得很小。 constraintDimensionRatio
也不起作用。我该如何解决?
高度为wrap_content
的图像。
编辑
我尝试了Sudhi的方法,结果就是这样:
图像居中,但所提供的代码未调整尺寸。 编辑2:
我尝试了Mtak的回答。这是结果。
这填满了我的屏幕。因此,我删除了两个视图。
看起来好多了,但是LinearLayout
占用了太多空间,因为它是match_parent
。我尝试将其更改为wrap_content:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="100">
然后发生这种情况:
我现在发现了许多工作宽度的方法,但是我希望高度相同。大多数时候,高度占据了整个屏幕,这不是我想要的。
很抱歉造成混乱。这就是我想要的:
如您所见,图像的高度和宽度相等。另外,无论布局包含图像是什么,都不会一直延伸到底部,而是包裹内容(这是我现在的主要工作)。
答案 0 :(得分:0)
使用固定高度
android:layout_height="100dp"
答案 1 :(得分:0)
使用约束布局。 使用“准则”并设置图片属性“ AdjustViewBounds” = true。
答案 2 :(得分:0)
我认为要进行对齐,您需要使用布局重力,并且要使图像视图的大小占屏幕的50%,您可以遵循以下代码。
final View rootView = findViewById(R.id.llRoot);
rootView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
if (rootView.getViewTreeObserver().isAlive())
rootView.getViewTreeObserver().removeOnPreDrawListener(this);
int width=rootView.getWidth();
ImageView ivIcon=findViewById(R.id.ivIcon);
ivIcon.getLayoutParams().width=width/2;
ivIcon.requestLayout();
// put your code here
return false;
}
});
Xml看起来像这样
<LinearLayout
android:id="@+id/llRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal">
<ImageView
android:id="@+id/ivIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/square_img" />
</LinearLayout>
结果将是
答案 3 :(得分:0)
使用外部线性布局,该布局具有上下两个虚拟视图:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="100">
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="25"/>
<LinearLayout
android:baselineAligned="false"
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="horizontal"
android:gravity="center"
android:layout_weight="50"
android:weightSum="100"
android:layout_gravity="center">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/additionContent"
app:srcCompat="@drawable/ic_additivecolor" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="25"/>
</LinearLayout>