【问题标题】:scrollView in android with a class extending View classandroid中的scrollView,类扩展View类
【发布时间】:2016-11-24 10:12:37
【问题描述】:

我没有使用任何布局,所以所有视图都是由 drawView 类创建的,那么我如何在这种情况下使用 scrollView。这样我就可以滚动并查看整行。

MainActivity.java

 public class MainActivity extends AppCompatActivity {
        DrawView drawView;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            drawView = new DrawView(this);
            drawView.setBackgroundColor(Color.WHITE);
            setContentView(drawView);
        }
    }

    //this class will draw lines on screen.

    public class DrawView extends View {
        Paint paint = new Paint();
        Bitmap bmp;
        public DrawView(Context context) {
            super(context);
            paint.setColor(Color.BLACK);
            paint.setStrokeWidth(3f);
            bmp = BitmapFactory.decodeResource(getResources(),     R.drawable.station);

        }

        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            canvas.drawLine(350,300,350,2500, paint);
            for (int i = 315; i< 995;i=i+20)
                canvas.drawLine(350,i,370,i,paint);
            canvas.drawLine(370,300,370,2500, paint);
            canvas.drawBitmap(bmp,350,300,paint);
            canvas.drawBitmap(bmp,300,500,paint);
        }
    }

//我也试过这样 并且在这种情况下使用此 xml 布局时,我使用过

setContentView(R.layout.activity_main)

activity_main这是我的 xml 布局文件

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fillViewport="true">

<com.example.shailendra.myapplication.DrawView
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

</ScrollView>  

然后我得到以下错误:

java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.shailendra.myapplication/com.example.shailendra.myapplication.MainActivity}:android.view.InflateException:二进制 XML 文件第 8 行:膨胀类错误com.example.shailendra.myapplication.DrawView 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2368) 在 android.app.ActivityThread.access$800(ActivityThread.java:144) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1285) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5233) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) 引起:android.view.InflateException:二进制 XML 文件第 8 行:膨胀类 com.example.shailendra.myapplication.DrawView 时出错 在 android.view.LayoutInflater.createView(LayoutInflater.java:616) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:504) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:414) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:365) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 在 com.example.shailendra.myapplication.MainActivity.onCreate(MainActivity.java:17) 在 android.app.Activity.performCreate(Activity.java:6001) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2368) 在 android.app.ActivityThread.access$800(ActivityThread.java:144) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1285) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5233) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) 引起:java.lang.NoSuchMethodException: [class android.content.Context, interface android.util.AttributeSet] 在 java.lang.Class.getConstructor(Class.java:531) 在 java.lang.Class.getConstructor(Class.java:495) 在 android.view.LayoutInflater.createView(LayoutInflater.java:580) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:504) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:414) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:365) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 在 com.example.shailendra.myapplication.MainActivity.onCreate(MainActivity.java:17) 在 android.app.Activity.performCreate(Activity.java:6001) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2368) 在 android.app.ActivityThread.access$800(ActivityThread.java:144) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1285) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5233) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) **

【问题讨论】:

标签: android android-scrollview ondraw


【解决方案1】:
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillViewport="true">
    Put draw View here
    </ScrollView>

你可以用yourDrawer.addView(yourDrawView)添加你的drawView

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    相关资源
    最近更新 更多