相关疑难解决方法(0)

onMeasure自定义视图说明

我试着做自定义组件.我扩展了View课程并用onDraw覆盖方法做了一些绘图.为什么我需要覆盖onMeasure?如果我没有,一切都被证明是正确的.有人可以解释一下吗?我该怎么写我的onMeasure方法?我见过几个教程,但每个教程都有点不同.有时他们会super.onMeasure在最后打电话,有时他们会使用setMeasuredDimension而不是打电话.差异在哪里?

毕竟我想要使用几个完全相同的组件.我将这些组件添加到我的XML文件中,但我不知道它们应该有多大.我希望稍后设置它的位置和大小(为什么我需要在自定义组件类时设置大小,onMeasure如果在onDraw我绘制它时也是如此).什么时候我需要这样做?

android view

305
推荐指数
3
解决办法
13万
查看次数

简单的方法来做动态但方形的布局

我正在使用a GridView来显示一堆本质上的视图LinearLayouts.我希望LinearLayouts它们都是方形的,但我也希望它们是动态大小的 - 也就是说,有两列我希望LinearLayouts根据屏幕的大小进行拉伸但保持方形.有没有办法通过xml布局来做到这一点,还是我必须以编程方式设置高度和宽度?

android

78
推荐指数
6
解决办法
5万
查看次数

自定义方形LinearLayout.怎么样?

我为方形布局创建了自己的类:

public class SquareLayout extends LinearLayout{

    public SquareLayout(Context context) {
        super(context);
    }

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

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


    @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);
    }
Run Code Online (Sandbox Code Playgroud)

然后,在我的xml中:

...
        <com.myApp.SquareLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center_horizontal"
            android:orientation="horizontal" >

            <ImageView
                android:id="@+id/cellImageView"
                android:adjustViewBounds="true"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="2dp"
                android:padding="2dp"
                android:scaleType="centerCrop"
                android:src="@drawable/image" /> …
Run Code Online (Sandbox Code Playgroud)

xml android android-linearlayout

21
推荐指数
3
解决办法
1万
查看次数

RelativeLayout没有正确更新自定义视图的宽度

我有这个容器类,用于制作其中一个尺寸,宽度或高度,另一个尺寸的比例.例如,我想要一个16:9的布局容器,其宽度为"match_parent".但是,当使用高度作为"match_parent"时,Android似乎没有正确地重新布局.当我将高度设置为宽度的比例时,一切都很好!反之亦然,它不起作用.这是怎么回事?

public class RatioLayout extends ViewGroup {

private float ratio = 1.6222f; // 4 x 3 default. 1.78 is 16 x 9
public float getRatio() { return ratio; }
public void setRatio(float ratio) {
    this.ratio = ratio;
    requestLayout();
}

public RatioLayout(Context context) {
    this(context, null);
}

public RatioLayout(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
}

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

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    Log.i("Ratio", "/onMeasure");
    int width …
Run Code Online (Sandbox Code Playgroud)

android android-layout

10
推荐指数
1
解决办法
1915
查看次数