通过方法放置按钮

时间:2018-12-25 18:06:46

标签: android android-layout

我想将按钮放在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>

我应该改变什么?我不确定我是否尝试以适当的方式进行操作。

0 个答案:

没有答案