1

次のコードを使用して、agraphクラスによって生成されたグラフをR.id.TranFragコンテナにロードしています。ただし、実行しても何も表示されません。助けてください

Agraph agraph = new Agraph(getActivity(),30);
LinearLayout mainContainer = (LinearLayout) getActivity().findViewById(R.id.TranFrag);
mainContainer.addView(agraph);

ここで、Agraph.javaは次のとおりです。

package com.salgaonkar.roomies_v3;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;

public class Agraph extends View {
private Paint paint;
private float MaxY = 20; 
float horstart = 0;
public Agraph(Context context , float MaxY) {
    super(context);     
    paint = new Paint();
    this.MaxY = MaxY;
    setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    // TODO Auto-generated constructor stub
}
protected void onDraw(Canvas canvas) {
    float Height = getHeight()-20;
    float Width = getWidth();
    canvas.drawARGB(255, 255, 255, 255);
    for (int i=0; i<=10; i++) {     
        paint.setStrokeWidth(2);
        paint.setColor(Color.BLACK);
        paint.setTextAlign(Paint.Align.LEFT);
        paint.setTextSize(20.0f);
        float y = ((Height / 10) * i)+20;
        Log.d("y: ",""+y);
        Log.d("lable", ""+(MaxY)*(10-i)/10);
        canvas.drawText(String.valueOf((MaxY)*(10-i)/10),0,y,paint);
    }
}

}
4

3 に答える 3

0

ビューAgraphはonMeasure(int、int)メソッドを実装していないようです。次のようなものを追加してみてください。

@Override
protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

setMeasuredDimension(100, 100);

}
于 2012-10-27T11:20:56.013 に答える
0

OKサンプルプロジェクトを作成しました。フラグメントアクティビティを呼び出し、メインアクティビティコンテキストをパラメーターとして渡し、フラグメントでAgraphを呼び出してビューを追加するコンストラクターを作成します。活動中

Fragment f = new TestFragment(this);

と断片的に

public TestFragment(FExampleActivity fExampleActivity) {
    Agraph agraph = new Agraph(fExampleActivity,30);
    LinearLayout mainContainer = (LinearLayout)fExampleActivity.findViewById(R.id.frags);
    mainContainer.addView(agraph);
}

この作品は私のために..、。

于 2012-10-27T11:51:15.860 に答える
0
Agraph agraph = new Agraph(getActivity(),30);
            LinearLayout mainContainer = (LinearLayout) getActivity().findViewById(R.id.TranFrag);
            mainContainer.addView(agraph);

わかりました。上記のコードでエラーが見つかりました。実際にはコンテナにビューが追加されていますが、コンテナがすでに存在していたため表示されませんでした。

ListViewが入力されているので、このようにコードを変更します

Agraph agraph = new Agraph(getActivity(),30);
            LinearLayout mainContainer = (LinearLayout) getActivity().findViewById(R.id.TranFrag); 
            mainContainer.removeAllViews(); //added
            mainContainer.addView(agraph);

今では正常に動作します。

于 2012-10-27T14:21:43.293 に答える