gpt4 book ai didi

android - 使用自定义 View 绘制边框 Android

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:51:37 26 4
gpt4 key购买 nike

我正在尝试通过绘制自定义 View 来绘制自定义边框。这是边界一侧的示例:

package com.sparkydev.guessaphrase;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.RectShape;
import android.util.AttributeSet;
import android.view.View;

public class LeftBorder extends View {
private ShapeDrawable vertRect, horizRect;

public LeftBorder(Context context, AttributeSet attributeset) {
super(context, attributeset);

int width = this.getWidth();
int height = this.getHeight();

vertRect = new ShapeDrawable(new RectShape());
vertRect.getPaint().setColor(Color.RED);
vertRect.setBounds(0, 0, width/10, height);
horizRect = new ShapeDrawable(new RectShape());
horizRect.getPaint().setColor(Color.RED);
horizRect.setBounds(0, 0, width, height/9);

}

protected void onDraw(Canvas canvas){
vertRect.draw(canvas);
horizRect.draw(canvas);
}

}

另一边的定义方式几乎相同。 XML 定义如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/wallpaper">


<!-- Declares left border's position, which is
drawn programmatically.-->
<com.sparkydev.guessaphrase.LeftBorder
android:id="@+id/leftborder"
android:layout_alignParentLeft="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>



<!-- Used a FrameLayout to contain
the menu buttons.-->
<FrameLayout
android:id="@+id/FrameLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>

<!-- Menu buttons -->

</FrameLayout>


<!-- Declares right border position (on right
of screen, below the left border) -->
<com.sparkydev.guessaphrase.RightBorder
android:layout_alignParentRight="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/leftborder"
/>



</RelativeLayout>

问题是,边框根本没有显示出来。显示背景,但没有其他内容。

最佳答案

来自 the "Building Custom Components" dev guide ,在创建自定义 View 时,它将具有 100x100 的设置大小,除非您另外指定。查看这是否与您遇到的问题有关。

"You will almost certainly want to override onMeasure() and are also likely to need to override onDraw() if you want the component to show something. While both have default behavior, the default onDraw() will do nothing, and the default onMeasure() will always set a size of 100x100 — which is probably not what you want."

关于android - 使用自定义 View 绘制边框 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3799887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com