2

私のアプリでは、その中のビューをスワイプすると「スナップ」する独自の Horizo​​ntalScrollView を作成しようとしています。レイアウトを読み込もうとするたびに、クラッシュします。だから、私は赤ちゃんの一歩を踏み出しています。プログラムでカスタムビューを作成するのは初めてなので、「常識的な」間違いがあるかもしれません。

これが私の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 レイアウト ファイルにカスタム ビューを含める必要があります。

4

1 に答える 1

8

カスタム ビューですべてのコンストラクターを作成する必要があります。

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);
}

そうすれば、レイアウトがうまくいくと思います。

于 2013-01-06T04:25:19.110 に答える