代码之家  ›  专栏  ›  技术社区  ›  CodingM

尝试在不导入的情况下获取视图类方法

  •  1
  • CodingM  · 技术社区  · 7 年前

    我遇到了一个问题,我已经花了大约一周的时间试图解决这个问题。我正在尝试使用 onDraw 方法 View 班问题是,在我的 Java 同学们,我已经进口了一些东西,我不知道如何获得 看法 类方法因为Java dosent允许扩展多个类。我一直在看其他帖子,我也尝试过这些解决方案,但在 我的senario ,几乎所有解决方案 不工作 . 任何 另外 解决?

    Java类:

    import android.graphics.Canvas;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.TextView;
    
    
    public class MainActivity extends AppCompatActivity /*Cant get rid of this import*/ {
    //Cant import View because something is already imported
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView tw = findViewById(R.id.text2);
        //Tried using View.onDraw(canvas), gives me error
    }
    //Will not work
    @Override
    public void onDraw(Canvas canvas){
        super.onDraw(canvas);
    }
    
    
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Prafulla Malviya Léo R.    7 年前

    如果您愿意,请查看并接受建议:)

    /**
     * Created by Prafulla Malviya on 2/25/2018.
     * Time : 2.38 AM India
     */
    public class DemoActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(new MyView(this));
            //init();
            //initView();
        }
    }
    
    
    package com.abhaya_foundation.abhayango;
    
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.view.View;
    
    /**
     * Created by Prafulla Malviya on 2/25/2018.
     * Time : 2.38 AM India
     */
    
    public class MyView extends View {
        private Paint paint;
    
        public MyView(Context context) {
            super(context);
    
            // create the Paint and set its color
            paint = new Paint();
            paint.setColor(Color.GRAY);
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            canvas.drawColor(Color.BLUE);
            canvas.drawCircle(200, 200, 100, paint);
        }
    
    }
    

    或者您可以添加

     <FrameLayout
            android:orientation="vertical"
            android:id="@+id/view_1"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
        </FrameLayout>
    

    并将MyView的实例传递给他们。

    MyView myView = new MyView(this);
            FrameLayout view  = (FrameLayout)findViewById(R.id.view_1);
            view.addView(myView);