Android 如何以编程方式在相对布局中对齐CenterVertical
我有这样的线性布局:Android 如何以编程方式在相对布局中对齐CenterVertical,android,kotlin,Android,Kotlin,我有这样的线性布局: <LinearLayout android:id="@+id/linearLayoutImages" android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="horizontal" android:weightSum="1"> </LinearLayout> 更新 线性布局本身处于水平滚动视图中(
<LinearLayout
android:id="@+id/linearLayoutImages"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="1">
</LinearLayout>
更新
线性布局本身处于水平滚动视图中(如果有任何区别的话)
<HorizontalScrollView
android:id="@+id/horizontalScrollViewImages"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:padding="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/buttonAddPic">
<LinearLayout
android:id="@+id/linearLayoutImages"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="1"></LinearLayout>
</HorizontalScrollView>
使用以下代码,您可以获得所需的输出
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayoutImages"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:weightSum="1"></LinearLayout>
输出
将(相对位置中心\u垂直)设置为(相对位置中心)
及
android:layout\u width=“wrap\u content”到android:layout\u width=“match\u parent”
(代表问题作者发布解决方案)
我终于自己找到了解决办法!我将相对布局更改为垂直线性布局(我不知道这是否重要):
然后将imageButtonDelete的宽度设置为与父项匹配
val params3 = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
val imageButtonDelete = ImageButton(this)
imageButtonDelete.setLayoutParams(params3)
imageButtonDelete.requestLayout()
imageButtonDelete.setBackgroundColor(Color.TRANSPARENT)
它没有这样的选择。它只有垂直居中,水平居中,在父项居中。使用
水平居中
抱歉,情况会变得更糟!这样,图像视图将转到滚动视图的右侧,垃圾桶将转到左侧的另一侧。我非常感谢您的帮助,但我不明白为什么它对我不起作用。当我设置params3.addRule(RelativeLayout.CENTER_HORIZONTAL)时;它会展开图片并形成一个长的水平滚动视图。这可能是因为水平滚动视图吗?您是否对线性布局进行了更改?正如我添加的android:gravity=“center\u horizontal”
那样,它没有这样的选项。它只有垂直居中、水平居中和父项居中。不幸的是,第二件事没有起作用。把它放在中心水平面上。对不起,事情变得更糟了!这样,图像视图转到滚动视图的右侧,垃圾桶转到左侧的另一侧。
try {
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(375, 375);
params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
params.setMargins(9, 0, 9, 0);
ImageView imageViewShowPic = new ImageView(this);
imageViewShowPic.setLayoutParams(params);
imageViewShowPic.setId(View.generateViewId());
imageViewShowPic.requestLayout();
RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
RelativeLayout relativeLayout = new RelativeLayout(this);
relativeLayout.setLayoutParams(params2);
relativeLayout.requestLayout();
RelativeLayout.LayoutParams params3 = new RelativeLayout.LayoutParams(75, 75);
params3.addRule(RelativeLayout.BELOW, imageViewShowPic.getId());
params3.topMargin = 30;
params3.addRule(RelativeLayout.CENTER_HORIZONTAL);
ImageButton imageButtonDelete = new ImageButton(this);
imageButtonDelete.setLayoutParams(params3);
imageButtonDelete.requestLayout();
relativeLayout.addView(imageViewShowPic);
relativeLayout.addView(imageButtonDelete);
linearLayoutImages.addView(relativeLayout);
imageViewShowPic.setImageResource(R.drawable.ic_launcher_background);
imageButtonDelete.setImageResource(R.drawable.ic_launcher_background);
} catch (Exception ex) {
Toast.makeText(this, ex.getMessage(), Toast.LENGTH_SHORT).show();
}
val params3 = RelativeLayout.LayoutParams(75,75)
params3.addRule(RelativeLayout.BELOW,imageViewShowPic.id)
params3.addRule(RelativeLayout.CENTER)
<LinearLayout
android:id="@+id/linearLayoutImages"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="1"></LinearLayout>
val params2 = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)
val linearLayout = LinearLayout(this)
linearLayout.setLayoutParams(params2)
linearLayout.orientation = LinearLayout.VERTICAL
linearLayout.requestLayout()
val params3 = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
val imageButtonDelete = ImageButton(this)
imageButtonDelete.setLayoutParams(params3)
imageButtonDelete.requestLayout()
imageButtonDelete.setBackgroundColor(Color.TRANSPARENT)