首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android 滚动视图(ScrollView)学习与运用

2012-07-02 
android 滚动视图(ScrollView)学习与应用http://blog.csdn.net/applezhengxd/article/details/5574356?xm

android 滚动视图(ScrollView)学习与应用
http://blog.csdn.net/applezhengxd/article/details/5574356

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <Button        android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="增加按钮" />    <ScrollView        android:id="@+id/scrollView1"        android:layout_width="fill_parent"        android:layout_height="wrap_content"         android:scrollbars="vertical">        <LinearLayout            android:id="@+id/linearLayout1"            android:orientation="vertical"            android:layout_width="fill_parent"            android:layout_height="wrap_content" >        </LinearLayout>    </ScrollView></LinearLayout>




package com.scrollview;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.util.Log;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 ScrollViewActivity extends Activity {    /** Called when the activity is first created. */// http://blog.csdn.net/applezhengxd/article/details/5574356private Button button1;private ScrollView scrollView1;private LinearLayout linearLayout1;private final Handler mHandler = new Handler();private static final String LOG_TAG = "ScrollViewActivity";     @Override    protected void onCreate(Bundle icicle) {             super.onCreate(icicle);             setContentView(R.layout.main);                 linearLayout1 = (LinearLayout) findViewById(R.id.linearLayout1);             scrollView1 = (ScrollView) findViewById(R.id.scrollView1);                 Button button = (Button) findViewById(R.id.button1);             button.setOnClickListener(new Button.OnClickListener() {                 private int mIndex = 1;                 @Override                public void onClick(View arg0) {                     // TODO Auto-generated method stub                          TextView textView = new TextView(ScrollViewActivity.this);                     textView.setText("Text View " + mIndex);                     LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(                             LinearLayout.LayoutParams.FILL_PARENT,                             LinearLayout.LayoutParams.WRAP_CONTENT                     );                     linearLayout1.addView(textView, p);                             Button buttonView = new Button(ScrollViewActivity.this);                     buttonView.setText("Button " + mIndex++);                     linearLayout1.addView(buttonView, p);                     //改变默认焦点切换                     buttonView.setOnKeyListener(new View.OnKeyListener() {                         public boolean onKey(View v, int keyCode, KeyEvent event) {                             if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN &&                                     event.getAction() == KeyEvent.ACTION_DOWN &&                                     v == linearLayout1.getChildAt(linearLayout1.getChildCount() - 1)) {                                 findViewById(R.id.button1).requestFocus();                                 return true;                             }                             return false;                         }                     });                     //投递一个消息进行滚动                     mHandler.post(mScrollToBottom);                 }                    });             //改变默认焦点切换             button.setOnKeyListener(new Button.OnKeyListener() {                 @Override                public boolean onKey(View v, int keyCode, KeyEvent event) {                     // TODO Auto-generated method stub                     Log.d(LOG_TAG, event.toString());                                          View viewToFoucus = null;                     if (event.getAction() == KeyEvent.ACTION_DOWN) {                         switch (keyCode) {                         case KeyEvent.KEYCODE_DPAD_UP:                             int iCount = linearLayout1.getChildCount();                             if ( iCount > 0) {                                 viewToFoucus = linearLayout1.getChildAt(iCount - 1);                             }                             break;                         case KeyEvent.KEYCODE_DPAD_DOWN:                             if (linearLayout1.getChildCount() > 1) {                                 viewToFoucus = linearLayout1.getChildAt(1);                             }                             break;                         default:                             break;                         }                     }                                          if (viewToFoucus != null) {                         viewToFoucus.requestFocus();                         return true;                     } else {                         return false;                     }                 }             });         }                           private Runnable mScrollToBottom = new Runnable() {             @Override            public void run() {                 // TODO Auto-generated method stub                 Log.d(LOG_TAG, "ScrollY: " + scrollView1.getScrollY());                 int off = linearLayout1.getMeasuredHeight() - scrollView1.getHeight();                 if (off > 0) {                 scrollView1.scrollTo(0, off);                 }                                    }         };              }

热点排行