我想将按钮放在ConstraintLayout上一些定义的坐标上,其中左上角为(0,0)。因此,我尝试将按钮附加到左上角,并使空白成为坐标的表示。我做了几次尝试,但是按钮仍然位于(0,0),并且按钮的XML没有应用。
我最后一次拼命尝试该方法是:
void addButton(int x, int y) {
try {
Button nb = (Button) getLayoutInflater().inflate(R.layout.button_layout,null);
nb.setOnClickListener(new MyOnClick(nb));
nb.setText(""+count);
nb.setVisibility(View.VISIBLE);
ConstraintLayout.LayoutParams lparams = new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
lparams.leftMargin = x;
lparams.topMargin = y;
nb.setLayoutParams(lparams);
list.putButton(new XYButton(nb,lparams)); //just synthetic merge of button and layout parameters
front.addView(nb);
} catch(Exception ee){
Toast.makeText(Field.this, ee.toString(), Toast.LENGTH_LONG).show(); }
catch(Error ee){ }
}
当我将ConstraintLayout的名称放入inflate()而不是null时,将应用XML,但是它抛出了ConstraintLayout无法强制转换为Button的异常。
按钮的XML:
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="40dp"
android:layout_height="35dp"
android:layout_gravity="center_horizontal"
android:text="button"
android:textSize="15dp"
/>
该字段的XML:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Field" android:visibility="visible" android:id="@+id/back" tools:layout_editor_absoluteY="25dp">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="0dp" android:id="@+id/linearLayout"
android:gravity="bottom" android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent">
<Button
android:text="@string/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/add"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_weight="1" style="@style/Widget.AppCompat.Button.Borderless"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/rm" android:layout_weight="1"
style="@style/Widget.AppCompat.Button.Borderless" android:visibility="visible"
android:text="@string/rm"/>
</LinearLayout>
<android.support.constraint.ConstraintLayout
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@+id/linearLayout" android:id="@+id/front">
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
我应该改变什么?我不确定我是否尝试以适当的方式进行操作。