android中一个关于horizontalscrollview的例子
2013-07-03 00:19
519 查看
horizontalscrollview这个组件主要是用来实现横向滑动界面显示的,其中注意一点的是:该组件只能添加一个子组件。
先来结果图:
代码如下:
主activity(MainActivity.java):
主activity的布局文件(activity_main.xml):
动态加载的布局文件(scrollview_item.xml):
先来结果图:
代码如下:
主activity(MainActivity.java):
package com.tody.horizontalscrollviewdemo; import android.os.Bundle; import android.app.Activity; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.Menu; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; /** * 主界面 * * @author tody.yang * */ public class MainActivity extends Activity { private LinearLayout mLinearLayout; private int mWidth; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getDeviceWidth(); initView(); } /** * 获得屏幕宽度 */ private void getDeviceWidth() { DisplayMetrics dm = new DisplayMetrics();// 获得屏幕分辨率 getWindowManager().getDefaultDisplay().getMetrics(dm); mWidth = dm.widthPixels; } /** * 初始化组件 */ private void initView() { int[] imageArray = { R.drawable.d0, R.drawable.d1, R.drawable.d2, R.drawable.d3, R.drawable.d4, R.drawable.d5 };// 图片数组(长度和horizontalscrollview的子项长度一样) mLinearLayout = (LinearLayout) findViewById(R.id.scrollview_layout);// 实例化线性布局 mLinearLayout.removeAllViews();// 删除以前的组件(如此保证每次都是horizontalscrollview中只有6个组件) for (int i = 0; i < 6; i++) {// 在horizontalscrollview中添加6个组件 int width = mWidth / 3; LinearLayout itemLayout = (LinearLayout) LinearLayout.inflate( MainActivity.this, R.layout.scrollview_item, null);// 动态实例化一个LinearLayout itemLayout.setLayoutParams(new LayoutParams(width, LayoutParams.MATCH_PARENT));// 设置宽度为一张屏幕显示三个组件 itemLayout.setGravity(Gravity.CENTER_VERTICAL);// 设置垂直居中 ImageView mImageView = (ImageView) itemLayout .findViewById(R.id.imageview); TextView mTextView = (TextView) itemLayout .findViewById(R.id.textview); final String page = "第" + (i + 1) + "张"; mTextView.setText(page); mImageView.setBackgroundResource(imageArray[i]); mLinearLayout.addView(itemLayout); itemLayout.setOnTouchListener(new OnTouchListener() {// 每一项添加触摸事件 public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "点击了" + page, Toast.LENGTH_SHORT).show(); return false; } }); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
主activity的布局文件(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" > <HorizontalScrollView android:layout_width="match_parent" android:layout_height="wrap_content" > <!-- 因为HorizontalScrollView只允许加载一个子组件,所有这里定义一个线性布局作为唯一的子组件,而我们想添加的其他组件可以通过动态加载布局,这样给程序的感觉还是一个子组件(ID为scrollview_layout的组件) --> <LinearLayout android:id="@+id/scrollview_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" > </LinearLayout> </HorizontalScrollView> </RelativeLayout>
动态加载的布局文件(scrollview_item.xml):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/item_layout" 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="俊哥" /> <ImageView android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:background="@drawable/d0" /> </LinearLayout>
相关文章推荐
- android的HorizontalScrollView(简单例子,无点击事件)
- android中一个关于ViewPager的例子
- 利用HorizontalScrollView自己写一个viewPager指示器
- 【Android】HorizontalScrollView内子控件横向拖拽
- Android学QQ空间相册浏览类型横向滑动效果显示多图片MyHorizontalScrollView
- Android ScrollViewy与HorizontalScrollView实现上下左右滚动
- android Viewpager HorizontalScrollView 实现分页栏拖拽
- [转]HorizontalScrollView介绍--支持水平滚动的android布局容器
- Android中Touch事件分析--解决HorizontalScrollView滑动和按钮事件触发问题
- Android简易实战教程--第四十四话《ScrollView和HorizontalScrollView简单使用》
- android中一个关于ScrollView的例子
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
- Android捕获View焦点事件,LinearLayout结合HorizontalScrollView实现ViewPgaer和选项卡Tabs联动
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
- Android中仿淘宝首页顶部滚动自定义HorizontalScrollView定时水平自动切换图片
- surfaceview嵌套在HorizontalScrollview中的一个问题
- Android 用HorizontalScrollView实现ListView的Item滑动删除
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
- 利用HorizontalScrollView自己写一个viewPager指示器
- Horizontalscrollview里添加一个布局,该布局里在添加一个自定义的View,为什么View里用Canvas画图无法显示?