Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 创建自定义视图和XML命名空间_Android - Fatal编程技术网

Android 创建自定义视图和XML命名空间

Android 创建自定义视图和XML命名空间,android,Android,我试图在android中创建自定义视图我在MainActivity和XML文件中提到了我的所有arrtrs列表,但我发现main.XML中有一个错误: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:custom="http://schemas.android.com/ap

我试图在android中创建自定义视图我在MainActivity和XML文件中提到了我的所有arrtrs列表,但我发现
main.XML
中有一个错误:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:custom="http://schemas.android.com/apk/res/com.example.customviews.piechart"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.example.customviews.charting.piechart.MainActivity
        android:layout_width="match_parent"
        android:layout_height="?android:attr/listPreferredItemHeight"
        custom:titleText="Background color"
        custom:valueColor="@android:color/holo_green_light"
        />

</LinearLayout> 

您是否有一个没有参数的构造函数

您应该添加一个构造函数,如:

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

您要求提供一个自定义视图的简单示例:

public class BirdView extends ImageView {

private float direction = 0;
Paint paint = new Paint();

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

public BirdView(Context context, AttributeSet attrs) {
    super(context, attrs);
    paint.setColor(Color.WHITE);
    paint.setStrokeWidth(6);
}

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

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),
            MeasureSpec.getSize(heightMeasureSpec));
}

@Override
public void draw(Canvas canvas) {
    canvas.save();
    int stratX = getWidth() / 2;
    int startY = getHeight() / 2;
    canvas.rotate(direction, stratX, startY);
    super.draw(canvas);
    canvas.restore();
    canvas.drawLine(stratX, startY, stratX, startY + 80, paint);
}

public void update(float dir) {
    direction = dir;
    invalidate();
}

}

错误是什么。。粘贴logcat数据是com.example.customviews.charting.piechart.main活动真的是视图吗?你需要发布更多信息才能得到答案。我认为
com.example.customviews.charting.piechart.main活动
没有扩展
视图
,如果是这样的话,您需要一种更好的方式来命名您的类/视图。它给出了一个确定的错误,现在错误已经被删除,但是应用程序没有启动。我有构造函数,但是在logcat中,它给出了一个错误,无法实例化活动组件信息{com.example.customviews.charting.piechart/com.example.customviews.charting.piechart.MainActivity}:java.lang.InstantiationException:无法实例化类com.example.customviews.charting.piechart.MainActivity;没有空构造函数我认为没有参数的构造函数是问题所在。你能不能把它放在一个里面:public MainActivity(Context-Context){super(Context);}下面是公共类MainActivity扩展视图的代码{public MainActivity(Context-Context,AttributeSet attrs){super(Context,attrs);}但是我在其他代码中也遇到了同样的问题。你的类最初有一个类似这样的构造函数:“public main activity(){}”,没有参数。你能给我推荐一个简单的例子,说明如何在android中创建自定义视图吗
public class BirdView extends ImageView {

private float direction = 0;
Paint paint = new Paint();

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

public BirdView(Context context, AttributeSet attrs) {
    super(context, attrs);
    paint.setColor(Color.WHITE);
    paint.setStrokeWidth(6);
}

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

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),
            MeasureSpec.getSize(heightMeasureSpec));
}

@Override
public void draw(Canvas canvas) {
    canvas.save();
    int stratX = getWidth() / 2;
    int startY = getHeight() / 2;
    canvas.rotate(direction, stratX, startY);
    super.draw(canvas);
    canvas.restore();
    canvas.drawLine(stratX, startY, stratX, startY + 80, paint);
}

public void update(float dir) {
    direction = dir;
    invalidate();
}