ScrollView卷轴视图是指当拥有很多内容,一屏显示不完时,需要通过滚动跳来显示的视图.的使用:
此示例中一个TextView和一个Button来实现自动滚动,当我们点击Button0时自动产生多个类似的项,如果一屏显示不完,则通过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>
<?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);//改变滚动条的位置
- }
- }
- };
- }
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来显示。