无法将视图添加到自定义RelativeLayout

时间:2016-08-06 10:13:50

标签: java android android-layout android-studio android-relativelayout

我对Android编程世界(最初是iOS开发人员)非常陌生,我对以编程方式添加视图感到有些困惑。我的Activity中有一个自定义的相对布局,我必须动态地添加视图。那就是我被困的地方......所以这是我的自定义视图:

public class BoardView extends RelativeLayout {

    // Initialisation
    @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int width = MeasureSpec.getSize(widthMeasureSpec);
        int height = MeasureSpec.getSize(heightMeasureSpec);
        int size = width > height ? height : width;
        setMeasuredDimension(size, size);
        this.addView(new Button(this.getContext()));
    }

    // Required constructors
    public BoardView(Context context) {
        super(context);
    }
    public BoardView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public BoardView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
}

然后在我的活动中,我试图这样做:

public class MainGameView extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.game_activity);


        RelativeLayout layout = (RelativeLayout) findViewById(R.id.view);
        Button bouton = new Button(this);
        bouton.setText("ok");
        bouton.setTextColor(Color.BLACK);
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(WRAP_CONTENT,WRAP_CONTENT);
        params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
        params.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
        params.leftMargin = 107;
        layout.addView(bouton, params);
    }
}

对我来说似乎很简单,但无法让它工作...... BoardView仍然是空的。任何人都可以解释我应该如何做到这一点吗?提前谢谢。

如果你需要xml来帮助我,这里是: (BoardView在最底部)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:background="#ffffff">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:background="@drawable/barre_menu"
        android:id="@+id/relativeLayout">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="28dp"
            android:text="SCORE"
            android:id="@+id/textViewScore"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:textColor="#ffffff"
            android:layout_marginBottom="20dp"
            android:textSize="24sp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="SCORE"
            android:id="@+id/textView3"
            android:layout_centerHorizontal="true"
            android:layout_gravity="bottom"
            android:layout_alignParentEnd="false"
            android:layout_above="@+id/textViewScore"
            android:textColor="#ffffff"
            android:textSize="13sp" />

        <Button
            style="?android:attr/buttonStyleSmall"
            android:layout_width="28dp"
            android:layout_height="wrap_content"
            android:text=""
            android:id="@+id/button"
            android:layout_alignTop="@+id/textViewScore"
            android:layout_alignBottom="@+id/textViewScore"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="20dp"
            android:background="@drawable/picto_menu" />

        <Button
            style="?android:attr/buttonStyleSmall"
            android:layout_width="28dp"
            android:layout_height="wrap_content"
            android:text=""
            android:id="@+id/button2"
            android:background="@drawable/picto_restart"
            android:layout_alignBottom="@+id/textViewScore"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_marginRight="20dp"
            android:layout_alignTop="@+id/textViewScore" />
    </RelativeLayout>

    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        ads:adSize="BANNER"
        ads:adUnitId="@string/banner_ad_unit_id"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true">
    </com.google.android.gms.ads.AdView>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_below="@+id/relativeLayout"
        android:layout_centerHorizontal="true"
        android:id="@+id/frameLayout">

        <fr.wiboyd.arnaud.kilo.Views.TileButton
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="0"
            android:id="@+id/button3"
            android:layout_gravity="center" />
    </FrameLayout>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/frameLayout"
        android:layout_centerHorizontal="true"
        android:layout_above="@+id/adView">

        <fr.wiboyd.arnaud.kilo.Views.BoardView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/view"
            android:layout_gravity="center"
            android:background="#cccccc" />

    </FrameLayout>
</RelativeLayout>

编辑: 该应用的屏幕截图。灰色方块是BoardView。我希望在其中绘制一个按钮,但它并没有... screenshot

0 个答案:

没有答案