`
Aina_hk55HK
  • 浏览: 386264 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Android ScrollView的使用

阅读更多
ScrollView卷轴视图是指当拥有很多内容,一屏显示不完时,需要通过滚动跳来显示的视图.的使用:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/ScrollView" android:layout_width="fill_parent"
	android:layout_height="wrap_content" android:scrollbars="vertical">
	<LinearLayout android:id="@+id/LinearLayout"
		android:orientation="vertical" android:layout_width="fill_parent"
		android:layout_height="wrap_content">
		<TextView android:id="@+id/TestView" android:layout_width="fill_parent"
			android:layout_height="wrap_content" android:text="TestView0" />
		<Button android:id="@+id/Button" android:text="Button0" android:layout_width="fill_parent"
			android:layout_height="wrap_content"></Button>
	</LinearLayout>
</ScrollView>


package com.Aina.Android;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;

public class Test_ScrollView extends Activity {
	/** Called when the activity is first created. */
	private LinearLayout mLayout;
	private ScrollView sView;
	private final Handler mHandler = new Handler();

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 创建一个线性布局
		mLayout = (LinearLayout) this.findViewById(R.id.LinearLayout);
		// 创建一个ScrollView对象
		sView = (ScrollView) this.findViewById(R.id.ScrollView);
		Button mBtn = (Button) this.findViewById(R.id.Button);
		mBtn.setOnClickListener(mClickListener);// 添加点击事件监听
	}

	public boolean onKeyDown(int keyCode, KeyEvent event){
		Button b = (Button) this.getCurrentFocus();
		int count = mLayout.getChildCount();
		Button bm = (Button) mLayout.getChildAt(count-1);

		if(keyCode==KeyEvent.KEYCODE_DPAD_UP && b.getId()==R.id.Button){
			bm.requestFocus();
			return true;
		}else if(keyCode==KeyEvent.KEYCODE_DPAD_DOWN && b.getId()==bm.getId()){
			this.findViewById(R.id.Button).requestFocus();
			return true;
		}
		return false;
	}
	// Button事件监听,当点击第一个按钮时增加一个button和一个textview
	private Button.OnClickListener mClickListener = new Button.OnClickListener() {

		private int index = 1;

		@Override
		public void onClick(View v) {
			TextView tView = new TextView(Test_ScrollView.this);//定义一个TextView
			tView.setText("TextView" + index);//设置TextView的文本信息
			//设置线性布局的属性
			LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
					LinearLayout.LayoutParams.FILL_PARENT,
					LinearLayout.LayoutParams.WRAP_CONTENT);
			mLayout.addView(tView, params);//添加一个TextView控件
			Button button = new Button(Test_ScrollView.this);//定义一个Button
			button.setText("Button" + index);//设置Button的文本信息
			button.setId(index++);
			mLayout.addView(button, params);//添加一个Button控件
			mHandler.post(mScrollToButton);//传递一个消息进行滚动
		}

	};
	private Runnable mScrollToButton = new Runnable() {

		@Override
		public void run() {
			int off = mLayout.getMeasuredHeight() - sView.getHeight();
			if (off > 0) {
				sView.scrollTo(0, off);//改变滚动条的位置
			}
		}

	};


}


此示例中一个TextView和一个Button来实现自动滚动,当我们点击Button0时自动产生多个类似的项,如果一屏显示不完,则通过ScrollView来显示。
分享到:
评论
9 楼 pimkle 2013-03-14  
代码有效 谢谢分享!
8 楼 s1018849994 2012-02-28  
ScrollView 包含的应该是一个子空间  在子控件中在添加控件
7 楼 kondoh 2012-01-31  
建议直接上代码
6 楼 hxt010521 2011-12-02  
5 楼 夜之son 2011-08-19  
楼主有没有发现scrollview里面放了textview的话,会在显示时自动获得输入法没如果拿掉textview的焦点,那么就没法输入了。有没有?
4 楼 sxd_0524 2011-08-09  
楼主  我爱你。。
3 楼 xff 2011-04-02  
copy书上的……
2 楼 蓝月儿 2010-12-01  
代码抄完后,  findViewById() 时 显示 Cannot cast from View to ScrollView  怎么回事啊,难道这个方法不对吗? 请教博主

我的邮箱:zhanglimin_09@126.com  谢谢啊
1 楼 sungod 2010-09-19  
博主,你的程序怎么运行报错啊,能不能发一个能跑起来的小demo啊。谢谢,或者发到我邮箱也可以,sungod999@163.com.非常感谢

相关推荐

Global site tag (gtag.js) - Google Analytics