Android:创建自定义 View

标签 android view

在我的应用程序中,我正在尝试创建我自己的 Horizo​​ntalScrollView,当您在其中滑动 View 时它会“捕捉”。每次它尝试加载布局时,它都会崩溃。所以,我正在采取婴儿步骤。我不熟悉以编程方式创建自定义 View ,所以如果可能存在一些“常识”错误。

这是我的 CustomView.java 文件:

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

public class CustomView extends View {

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

这是我的 MainActivity.java 文件:

import android.app.Activity;

public class MainActivity extends Activity {

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

这是我的 main_layout.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/lchoose_weapon"
    tools:context=".ChooseWeaponActivity" >

<TextView
    android:id="@+id/tvTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="Title"
    android:textSize="40sp" />

<com.javaknight.ultimaterps.CustomView
    android:id="@+id/CustomVw"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/tvTitle"
    android:layout_centerHorizontal="true" />
<TextView
    android:id="@+id/tv2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/CustomVm"
    android:layout_centerHorizontal="true"
    android:text="Another TextView Below" />

<Button
    android:id="@+id/bOK"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/tv2"
    android:layout_centerHorizontal="true"
    android:text="ok" />

</RelativeLayout>

使用以下代码无法显示布局。只要我从 xml 文件中删除 CustomView,它就可以正常工作。我希望 xml 布局文件中包含自定义 View 。

最佳答案

您应该在自定义 View 中创建所有构造函数:

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

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

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

如果你这样做,我想你的布局会起作用。

关于Android:创建自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14179092/

相关文章:

恢复 Activity 后,Android TabLayout 将不会正确对齐

grails - GSP 与 Grails 中的 Controller

java - 使用 View.GONE 时,RelativeLayout Visibility 不起作用

ruby-on-rails - Rails 3,仅在用户登录时呈现部分

jsf-2 - 在每个 View 上调用 session 作用域 bean 方法

android - Android中圆圈内的文字

Android SQLite查询: "queryNumEntries .. is not applicable for the arguments"?

android - RxAndroid : Manage events of interdependent objects

android - 单击列表项而不是启动另一个 Activity 后应用程序不断崩溃

java - 设备重启后启动 Phonegap 插件