以编程方式添加imageview约束问题

时间:2020-01-01 16:22:58

标签: java android xml imageview

我正在使用Android构建(用于Android Studio的应用程序,并且在以编程方式添加ImageViewFrameLayout的位置时遇到了一些麻烦。

第一件事:在ImageView文件上可以看到,我在FrameLayout的{​​{1}}上有一个初始AVATAR01

xml

然后,我使用下一个<FrameLayout android:id="@+id/LayJog" android:layout_width="200dp" android:layout_height="wrap_content" android:layout_marginLeft="0dp" android:layout_marginTop="0dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <ImageView android:id="@+id/AVATAR01" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" tools:srcCompat="@drawable/avatar01" /> </FrameLayout> 代码添加另一个JAVA,类似于我之前已经声明的代码:

ImageView

上面的代码没有任何//Objects: ImageView IMG01 = (ImageView) findViewById(R.id.AVATAR01); FrameLayout LAYJOG = (FrameLayout) findViewById(R.id.LayJog); ViewGroup.LayoutParams LAYPAR = new ViewGroup.LayoutParams(IMG01.getLayoutParams()); ViewGroup.MarginLayoutParams MARPAR = new ViewGroup.MarginLayoutParams(IMG01.getLayoutParams()); //New ImageView: ImageView IMG02 = new ImageView(getApplicationContext()); IMG02.setLayoutParams(new ViewGroup.LayoutParams(LAYPAR)); IMG02.setLayoutParams(new ViewGroup.MarginLayoutParams(MARPAR)); IMG02.setTop(100); IMG02.setImageResource(R.drawable.avatar02); LAYJOG.addView(IMG02); ,但是程序将新图像放置在runtime errors的位置(0, 0)处。我很确定这与我添加的新FrameLayout的约束设置有关,但是我无法解决此问题。有谁知道如何将新的ImageView放在位置ImageView上?谢谢。

1 个答案:

答案 0 :(得分:1)

我认为您可以通过在ImageView中增加边距来解决此问题。 例如:

LinearLayout layout = findViewById(R.id.layout);

    ImageView IMG02 = new ImageView(this);
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT , LinearLayout.LayoutParams.WRAP_CONTENT);
    layoutParams.setMargins(LEFT , TOP , RIGHT , BOTTOM);
    IMG02.setLayoutParams(layoutParams;

    layout.addView(IMG02);

您必须插入值,而不是“ LEFT,TOP,RIGHT,BOTTOM”