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)