Android アプリでロックされた textField と ScrollView を使用しようとしています。実行時にそうしようとしていますが、何かが欠けています。最初に LinearLayout に追加したオブジェクトは、表示される唯一のものです。私は何が欠けていますか?私は xml レイアウト ファイルを介して何も定義していません。
私の主な活動は次のとおりです。
パッケージcom.example.scrolltest;
import com.example.scrolltest.Draw; android.widget.ScrollView をインポートします。android.widget.LinearLayout をインポートします。android.widget.TextView をインポートします。android.os.Bundle をインポートします。android.app.Activity をインポートします。android.graphics.Color をインポートします。
public class MainActivity extends Activity { Draw draw;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onResume(){
super.onResume();
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.HORIZONTAL);
int lHeight = LinearLayout.LayoutParams.MATCH_PARENT;
int lWidth = LinearLayout.LayoutParams.MATCH_PARENT;
TextView tv = new TextView(this);
tv.setText("Test text. Boom.");
draw = new Draw(this);
draw.setBackgroundColor(Color.WHITE);
ScrollView scrollView = new ScrollView(this);
scrollView.addView(draw);
// add the views to the layout
ll.addView(scrollView, new LinearLayout.LayoutParams(lHeight, lWidth));
ll.addView(tv, new LinearLayout.LayoutParams(lHeight, lWidth));
setContentView(ll);
}
}
ScrollView のコンテンツは動的であり、いつでも変更できるため、ニヤニヤするために、Draw オブジェクトの静的な例を示します。
パッケージcom.example.scrolltest;
android.content.Context をインポートします。android.graphics.Canvas をインポートします。android.graphics.Color をインポートします。android.graphics.Paint をインポートします。android.view.View をインポートします。
public class Draw extends View { ペイント paint = new Paint();
public Draw(Context context) {
super(context);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// Compute the height required to render the view
// Assume Width will always be MATCH_PARENT.
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = 4000 + 50; // Since 3000 is bottom of last Rect to be drawn added and 50 for padding.
setMeasuredDimension(width, height);
}
@Override
public void onDraw(Canvas canvas) {
paint.setColor(Color.BLUE);
canvas.drawLine(100, 20, 100, 1900, paint);
paint.setColor(Color.BLACK);
canvas.drawText("00:00", 10, 10, paint);
int y = 0;
int x = 200;
for(int i = 100; i < 2900; i=i+10){
paint.setColor(Color.GREEN);
canvas.drawRect(x, i, x+50, i+10, paint);
if(y == 0){
y = 1;
x = 200;
} else
{
y = 0;
x = 30;
}
}
}
}