方形布局与相对放置的按钮 - Android

时间:2015-01-06 18:25:14

标签: android android-layout

抱歉我的愚蠢问题,但我是初学者。 我有“相对”的方形布局,我需要在这个方形布局中插入按钮,这相对改变了尺寸和位置。这些参数取决于方形布局的尺寸。在第一张图片是方形布局的尝试,我想放置按钮。在第二张图片上显示可能看起来像结果。为我的英语而烦恼:)

感谢您的评论。

first second

这是我的squarelayout.java

package com.example.squarelayout;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;

public class SquareView extends View {
  public SquareView(Context context) {
    super(context);
  }

  public SquareView(Context context, AttributeSet attrs) {
    super(context, attrs);
  }

  public SquareView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
  }

  public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int size = Math.min(getMeasuredWidth(), getMeasuredHeight());
    setMeasuredDimension(size, size);
  }
}

这是我的activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent" >

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="top"
    android:orientation="horizontal"
    android:weightSum="100">


      <com.example.squarelayout.SquareView
          android:layout_width="0dp"
          android:layout_height="fill_parent"
          android:layout_weight="100"
          android:background="#f00"
          android:orientation="horizontal" />

  </LinearLayout>

</FrameLayout>

1 个答案:

答案 0 :(得分:0)

将您的SquareView课程更改为RelativeLayout而不是View

如果您更改了如下所示的activity_main.xml,请移除LinearLayout并将SquareView的宽度和高度设置为fill_parent,否则广场将不会消失:< / p>

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent" >

          <com.example.transparentcircle.SquareView
          android:id="@+id/squareview"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:background="#f00">

              <Button
                  android:id="@+id/button1"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_marginLeft="160dp"
                  android:layout_marginTop="40dp"
                  android:text="B"/>

              <Button
                  android:id="@+id/button2"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_marginLeft="120dp"
                  android:layout_marginTop="100dp"
                  android:text="B"/>

          </com.example.transparentcircle.SquareView>

</FrameLayout>

按钮可以像上面一样添加到xml中的SquareView或以编程方式创建。

您还可以根据SquareView的大小在代码中设置边距。但是,您不能直接在主活动中的onCreate()中执行此操作,但需要等到布局完成后才能设置。有关如何执行此操作的示例,请参阅this question

另外,请参阅this question了解如何在代码中设置边距。