如何为自己定义的View增加滚动条 setContentView中还是通过layout的xml来创建,xml中将自己的view外面添加一个scrollview的标签。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的程序是在myView中完成一些绘制操作,没用到xml文件,由于绘制的内容比较多,所以想给加个滚动条,谢谢了。 突然想明白了,在myView中设置它的contentView为一个xml文件,在xml文件中只有一个TextView,谢谢了 1.声明一个layout// 设置画面布局 ll = new LinearLayout(this.getBaseContext()); ll.setOrientation(LinearLayout.VERTICAL);2.声明一个ScrollView,把ScrollView添加到ll中3.声明一个你自己的MyView,把MyView添加到ScrollView中ScrollView中只能有一个直接元素,如果有多个MyView, 就先放在一个layout中,再把layout放在ScrollView中 但这样什么也显示不出来:代码: package lzu.draw;import android.app.Activity;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Rect;import android.graphics.drawable.Drawable;import android.graphics.drawable.ShapeDrawable;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.EditText;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ScrollView;import android.widget.TextView;public class draw extends Activity { /** Called when the activity is first created. */ private EditText tt = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LinearLayout li = (LinearLayout)findViewById(R.id.linear); ScrollView sview = new ScrollView(this); li.addView(sview); sview.addView(new myView(this)); } private class myView extends View{ public myView(Context context) { super(context); // TODO Auto-generated constructor stub } protected void onDraw(Canvas canvas){ super.onDraw(canvas); canvas.drawColor(Color.WHITE); Rect rect = new Rect(0,0,40,40); Paint paint = new Paint(); System.out.println("size = " + paint.getTextSize()); paint.setColor(Color.BLACK); paint.setStyle(Paint.Style.STROKE); int base_x = 100; int base_y = 130; for( int i = 0; i < 40; i++){ paint.setTextSize(15); canvas.drawText("hello " + (i + 1), base_x , base_y + i * 10 + 20, paint); } } }}xml:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:id="@+id/linear" android:layout_width="fill_parent" android:layout_height="fill_parent"></LinearLayout>麻烦你帮我看下,谢谢了 Android launch Android能开发Google Earth应用么? ubuntu中 android源代码的使用求教 一次性写满sdcard的办法 魅族M9适合Android开发吗? inflate了一个view之后怎么获得它的截图 你们公司的框架都用什么啊? 怎么去掉tabhost默认的选项卡 Looper的使用问题---在什么时候用? 如何实现像豌豆荚或者360手机助手可以得到安卓手机已安装的应用,并且可以安装新的应用 ListView可以像联系人那里那样查询吗? xml的规范问题
// 设置画面布局
ll = new LinearLayout(this.getBaseContext());
ll.setOrientation(LinearLayout.VERTICAL);
2.声明一个ScrollView,把ScrollView添加到ll中
3.声明一个你自己的MyView,把MyView添加到ScrollView中ScrollView中只能有一个直接元素,如果有多个MyView, 就先放在一个layout中,再把layout放在ScrollView中
代码:
package lzu.draw;import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.ShapeDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;public class draw extends Activity {
/** Called when the activity is first created. */
private EditText tt = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout li = (LinearLayout)findViewById(R.id.linear);
ScrollView sview = new ScrollView(this);
li.addView(sview);
sview.addView(new myView(this));
}
private class myView extends View{ public myView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawColor(Color.WHITE);
Rect rect = new Rect(0,0,40,40);
Paint paint = new Paint();
System.out.println("size = " + paint.getTextSize());
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);
int base_x = 100;
int base_y = 130;
for( int i = 0; i < 40; i++){
paint.setTextSize(15);
canvas.drawText("hello " + (i + 1), base_x , base_y + i * 10 + 20, paint);
}
}
}
}xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:id="@+id/linear"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</LinearLayout>麻烦你帮我看下,谢谢了