android中一个关于ScrollView的例子

先给效果图:


关于ScrollView组件了,其实和HorizontalScroolView组件相似,前者是用来显示垂直方向,后者是显示水平方向,当然ScrollView也是只能添加唯一的一个子组件

主activity(MainActivity.java):

package com.tody.scrollviewdemo;

import android.os.Bundle;
import android.app.Activity;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;

/**
 * 主界面
 * @author tody.yang
 *
 */

public class MainActivity extends Activity {

	private int deviceHeight;//屏幕的高度
	private LinearLayout mLinearLayout;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    /**
     * 获取屏幕高度
     * @return deviceHeight 屏幕高度
     */
    private int getDeviceHeight(){
    	// 获取屏幕分辨率
    	DisplayMetrics dm = new DisplayMetrics();
    	getWindowManager().getDefaultDisplay().getMetrics(dm);
    	deviceHeight = dm.heightPixels;
    	return deviceHeight;
    }
    
    private void initView(){
    	mLinearLayout = (LinearLayout) findViewById(R.id.lineLayout);//实例化一个线性布局组件,而这个组件作为ScrollView的唯一子组件
    	mLinearLayout.removeAllViews();//移除该组件下的所有子组件对象
    	
    	int[] imageArray = {R.drawable.d0,R.drawable.d1,R.drawable.d2,R.drawable.d3,R.drawable.d4,R.drawable.d5,R.drawable.d6};//实例化一个整型数组用来存放图片资源
    	
    	for (int i = 0; i < imageArray.length; i++) {//循环的次数和imageArray数组的长度相同
			LinearLayout itemLayout =  (LinearLayout) LinearLayout.inflate(MainActivity.this, R.layout.scrollview_item, null);//动态实例化一个线性布局
			itemLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, getDeviceHeight()/3));//高度为当前屏幕的1/3
			itemLayout.setGravity(Gravity.CENTER_HORIZONTAL);//设置水平居中
			
			TextView mTextView = (TextView) itemLayout.findViewById(R.id.textView);//实例化scrollview_item布局中的TextView组件
			ImageView mImageView = (ImageView) itemLayout.findViewById(R.id.imageView);//实例化scrollview_item布局中的ImageView组件
			
			final String page = "第"+(i+1)+"张";
			mTextView.setText(page);//设置显示的文字
			mImageView.setBackgroundResource(imageArray[i]);//设置显示的图片
			
			mLinearLayout.addView(itemLayout);
			
			itemLayout.setOnClickListener(new OnClickListener() {
				
				public void onClick(View v) {
					// TODO Auto-generated method stub
					Toast.makeText(MainActivity.this, "点击了"+page, Toast.LENGTH_SHORT).show();
				}
			});
		}
    	
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    
}

主界面布局文件(activity_main.xml):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

	<ScrollView 
	    android:layout_width="match_parent"
	    android:layout_height="match_parent"
	    >
	    <LinearLayout 
	        android:id="@+id/lineLayout"
	        android:layout_width="match_parent"
	        android:layout_height="wrap_content"
	        android:orientation="vertical"
	        >
	        
	    </LinearLayout>
	</ScrollView>
</RelativeLayout>

加载子项的布局文件(scrollview_item.xml):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

	<TextView 
	    android:id="@+id/textView"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:layout_gravity="center_horizontal"
	    android:text="俊哥"
	    android:textSize="20sp"
	    />
	<ImageView 
	    android:id="@+id/imageView"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:background="@drawable/d0"
	    android:layout_gravity="center_horizontal"
	    />
</LinearLayout>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值