首先我要强调的是,我花了很长时间寻找一个答案,也许我没有找到一个因为我不是真的了解它是如何工作的。 我正在设置UI,但无法通过修改其约束来移动图像视图。基本上我的问题是修改约束似乎不会修改图像的位置。
这是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="geoensea.ensea.com.geoensea.MainActivity">
<Button
android:id="@+id/button"
android:layout_width="80dp"
android:layout_height="41dp"
android:layout_marginBottom="60dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="@string/button_send"
android:visibility="visible"
app:layout_constraintBottom_toTopOf="@+id/imageView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/textView"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/imageView"
android:layout_width="326dp"
android:layout_height="320dp"
android:layout_marginBottom="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:contentDescription="@string/map_rdc"
android:src="@drawable/ic_two_men"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"
app:layout_constraintVertical_bias="0.541" />
<TextView
android:id="@+id/textView"
android:layout_width="165dp"
android:layout_height="74dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="@string/title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
我的主要活动
package geoensea.ensea.com.geoensea;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class MainActivity extends AppCompatActivity {
LinearLayout mLinearLayout;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Image
// Create a LinearLayout in which to add the ImageView
mLinearLayout = new LinearLayout(this);
// Instantiate an ImageView and define its properties
ImageView i = new ImageView(this);
i.setImageResource(R.drawable.ic_two_men);
// set the ImageView bounds to match the Drawable's dimensions
i.setAdjustViewBounds(true);
i.setLayoutParams(new Gallery.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
// Add the ImageView to the layout and set the layout as the content view
mLinearLayout.addView(i);
setContentView(mLinearLayout);
//Button new activity
}
}
图像始终位于布局的左上角:
答案 0 :(得分:0)
你实际上并没有说出问题是什么,但我看到你的ImageView声明了水平偏差。如果没有指定开始和结束约束,它将无法工作。
<ImageView
android:id="@+id/imageView"
android:layout_width="326dp"
android:layout_height="320dp"
android:contentDescription="@string/map_rdc"
android:src="@drawable/ic_two_men"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"
app:layout_constraintVertical_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5" />
澄清此代码:您已为视图指定了开始和结束约束,并将其宽度设置为给定值。在这种情况下,有边缘(在scren边缘和视图边缘之间)。 Android必须计算它们,并且它使用垂直偏置参数(dafault设置为0.5)来执行此操作。水平偏差只是左右边距的比率(0.5:边距相等,0:左边距等于0,1:右边距等于0)。
编辑:
您想在onCreate方法中使用此代码得到什么?只是做简单:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ID_OF_THE_XML_YOU'VE_PASTED);
}
你知道你没有真正使用你的xml文件吗?您在屏幕上看到的所有内容都是在onCreate方法中动态生成的!
只是为了100%确定你理解一切。你的xml文件(这个我们一直在讨论的文件)有它的名字......例如activity_main.xml。在这种情况下输入:
setContentView(R.layout.activity_main)