2016-11-24 57 views
0

我沒有使用任何佈局,所以所有視圖是由drawView類創建的,那麼我怎樣才能在這種情況下使用scrollView。這樣我就可以滾動並查看整個行。在android中的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) at android.app.ActivityThread.access $ 800(ActivityThread.java:144) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1285) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) 在android.app.ActivityThread.main(ActivityThread.java:5233) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:898) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) 引起:android.view.InflateException:二進制XML文件行#8:錯誤膨脹類com.exa m.shailendra.myapplication.DrawView at android.view.LayoutInflater.createView(LayoutInflater.java:616) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) at android.view.LayoutInflater.rInflate(LayoutInflater .java:806) at android.view.LayoutInflater.inflate(LayoutInflater.java:504) at android.view.LayoutInflater.inflate(LayoutInflater.java:414) at android.view.LayoutInflater.inflate(LayoutInflater.java :365) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) at android.support.v7.app.AppCompatActiv ity.setContentView(AppCompatActivity.java:140) at com.example.shailendra.myapplication.MainActivity.onCreate(MainActivity.java:17) at android.app.Activity.performCreate(Activity.java:6001) at android。 app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261) at android.app.ActivityThread.handleLaunchActivity(ActivityThread。java:2368) at android.app.ActivityThread.access $ 800(ActivityThread.java:144) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1285) at android.os.Handler.dispatchMessage(Handler .java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5233) at java.lang.reflect.Method.invoke(Native方法) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:898) at com.andr oid.internal.os.ZygoteInit.main(ZygoteInit.java:693) 引發:java.lang.NoSuchMethodException:[android.content.Context,接口android.util.AttributeSet] at 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) at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) at android.view.LayoutInflater.inflate(LayoutInflater.java:504) at android.view.LayoutInflater.in flats(LayoutInflater.java:414) at android.support.LayoutInflater.inflate(LayoutInflater.java:365) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) at android.support。 (android.app.Activity.performCreate(Activity.java:6001))。 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261) 在android.app.ActivityThread.access $ 800(ActivityThread.java:144) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1285)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2368) at android.app.ActivityThread.access at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5233) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(Z ygoteInit.java:898) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)**

+0

添加您的drawView函數裏面添加了這一觀點像這樣的滾動視圖http://stackoverflow.com/a/2799179/1576416 –

+0

你不能使用佈局在滾動視圖內添加視圖! –

回答

-1
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fillViewport="true"> 
    Put draw View here 
    </ScrollView> 

您可以yourDrawer.addView(yourDrawView)