一、ScrollView

由于手机屏幕的高度有限,当普通布局放不下现实和的内容时,ScrollView视图(滚动视图)就会派上用场,因为数据可以往下滚动显示。

二、HorizontalScrollView

看名称就清楚,当想在水平方向想放置更多的空间,屏幕宽度放不下的时候,它就派上用场了。因为用法非常简单,跟ScrollView一样只不过是个父容器,所以我结合上面的案例,把HorizontalScrollView放到了ScrollView里面。这样通过一个案例,同时学习了两个组件的使用,机智如我~

为了程序的可读性,直接上完整代码了:

总布局:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myscroll"
android:layout_width="fill_parent"
android:layout_height="fill_parent" > <LinearLayout
android:id="@+id/mylinear"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" > <ImageView
android:layout_width="match_parent"
android:layout_height="150dp"
android:scaleType="centerCrop"
android:src="@drawable/recommend_61" /> <HorizontalScrollView
android:background="#99cccccc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:scrollbars="none" > <LinearLayout
android:id="@+id/id_gallery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="horizontal" >
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
<!-- android:scrollbars="none" --> </ScrollView>

因为我要在HorizontalScrollView的基础上,继续嵌套控件,因此定义了一个item的布局:activity_index_gallery_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="200dp"
android:orientation="vertical" > <ImageView
android:id="@+id/id_index_gallery_item_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:scaleType="centerCrop"
android:src="@drawable/home01" /> <TextView
android:id="@+id/id_index_gallery_item_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="哈哈"
android:layout_gravity="center_horizontal"
android:textColor="#ff0000"
android:textSize="12dp" /> </LinearLayout>

最后活动中的代码。稍作修改:

package com.example.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast; public class MainActivity extends Activity { String str[] = { "1", "2", "3", "4", "5", "6", "7", "8", };
private int[] images = {R.drawable.home01,R.drawable.home02,R.drawable.home03,R.drawable.home04}; public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_main);
//初始设置按钮
initBtn();
//初始设置HorizontalScrollView
initHorizontalScrollView(); } private void initBtn() {
//拿到线性布局容器
LinearLayout linear = (LinearLayout) super.findViewById(R.id.mylinear);// 取得组件
//设置按钮的大小参数
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);// 定义按钮的布局参数 ,宽度充满父容器,高度包裹内容
for (int i = 0; i < str.length; i++) {
//动态添加按钮
Button btn = new Button(this);// 创建按钮组件
btn.setText(this.str[i]);// 设置文本
//给每个按钮都设置id编号(可通过btn.getId()获取对应的id编号)
btn.setId(i);
//参数设置给按钮
btn.setLayoutParams(params);
linear.addView(btn);// 线性布局增加孩子组件
btn.setOnClickListener(new OnClickListenerImpl());
}
} private void initHorizontalScrollView() {
//HorizontalScrollView的孩子容器
LinearLayout mGallery = (LinearLayout) findViewById(R.id.id_gallery); //给孩子容器添加控件
for (int i = 0; i < images.length; i++) { //控件以布局的形式引入
View view = View.inflate(this, R.layout.activity_index_gallery_item, null);
//设置图片资源数据
ImageView img = (ImageView) view
.findViewById(R.id.id_index_gallery_item_image);// 找到显示图片的控件
img.setImageResource(images[i]);
img.setId(i);
TextView txt = (TextView) view
.findViewById(R.id.id_index_gallery_item_text);
txt.setText("我是图片"+i); mGallery.addView(view); }
} private class OnClickListenerImpl implements OnClickListener { public void onClick(View v) {
switch (v.getId()) {
case 0:
Toast.makeText(MainActivity.this, "您选择了按钮1!", Toast.LENGTH_SHORT)
.show();
break;
case 1:
Toast.makeText(MainActivity.this, "您选择了按钮2!", Toast.LENGTH_SHORT)
.show();
break;
case 2:
Toast.makeText(MainActivity.this, "您选择了按钮3!", Toast.LENGTH_SHORT)
.show();
break;
case 3:
Toast.makeText(MainActivity.this, "您选择了按钮4!", Toast.LENGTH_SHORT)
.show();
break;
case 4:
Toast.makeText(MainActivity.this, "您选择了按钮5!", Toast.LENGTH_SHORT)
.show();
break;
case 5:
Toast.makeText(MainActivity.this, "您选择了按钮6!", Toast.LENGTH_SHORT)
.show();
break;
case 6:
Toast.makeText(MainActivity.this, "您选择了按钮7!", Toast.LENGTH_SHORT)
.show();
break;
case 7:
Toast.makeText(MainActivity.this, "您选择了按钮8!", Toast.LENGTH_SHORT)
.show();
break; default:
break;
} } }
}

运行效果如下:

您如果是正处于学习阶段,真诚的邀请您加入刚建立的群交流Android技术,一起学习:

Android开发交流群:497646615

也可以关注Android程序员开发指南  公众号

您看一看文章也就5-10分钟,笔者要花1个多小时才能完成,一起讨论问题哈。公众号二维码:

Android简易实战教程--第四十四话《ScrollView和HorizontalScrollView简单使用》的更多相关文章

  1. Android简易实战教程--第三十四话《 自定义SeekBar以及里面的一些小知识》

    转载本专栏文章,请注明出处尊重原创:博客地址http://blog.csdn.net/qq_32059827/article/details/52849676:小杨的博客 许多应用可能需要加入进度,例 ...

  2. Android简易实战教程--第三十六话《电话录音》

    今天完成一个简单的电话录音功能,即接通电话后,立即录下自己打电话的声音.实现起来比较简单:一个服务,一个TelephonyManager.一个MediaRecorder就够了. 1.布局提供一个开启录 ...

  3. Android简易实战教程--第三十五话《音乐播放》

    已经好几天不更新博客了,今天轻松一点模拟个简单的"音乐播放器".1分钟看完~ 整个简单布局,加几个控制按钮: <LinearLayout xmlns:android=&quo ...

  4. Android简易实战教程--第三十九话《Chronometer实现倒计时》

    Android提供了实现按照秒计时的API,今天就是用这个API实现简单的倒计时. 来个布局: <?xml version="1.0" encoding="utf- ...

  5. Android简易实战教程--第三十九话《简单的模糊查询》

    今天这一篇小案例模拟模糊查询,即输入一个字符,显示手机对应的所有存在该字符的路径. 布局: <?xml version="1.0" encoding="utf-8& ...

  6. Android简易实战教程--第三十八话《自定义通知NotifiCation》

    上一篇小案例,完成了一个普通的通知,点击通知启动了一个活动.但是那里的通知没有加入些"靓点",这一篇就给它加入自定义的布局,完成自定义的通知. 应用:比如QQ音乐为例,当点击音乐播 ...

  7. Android简易实战教程--第五十话《动画扫描》

    祝新年快乐!2017(一起)前行. 转载博客请注明出处:道龙的博客 本篇简答的小案例,使用动画知识,完成一个类似雷达扫描效果,并且加入自定义进度条.对于自定义进度条前面有很详细的解析和案例了,本篇就结 ...

  8. Android简易实战教程--第五十一话《使用Handler实现增加、减少、暂停计数》

    转载博客请注明出处:道龙的博客 之前,写过一篇使用异步任务AysncTask实现倒计时的小案例,喜欢的话可以参考博客:Android简易实战教程--第三十三话< AsyncTask异步倒计时&g ...

  9. Android简易实战教程--第三十二话《使用Lrucache和NetworkImageView加载图片》

    转载本专栏每一篇博客请注明转载出处地址,尊重原创.此博客转载链接地址:小杨的博客    http://blog.csdn.net/qq_32059827/article/details/5279131 ...

  10. Android简易实战教程--第三十一话《自定义土司》

    最近有点忙,好几天不更新博客了.今天就简单点,完成自定义土司. 主布局文件代码: <RelativeLayout xmlns:android="http://schemas.andro ...

随机推荐

  1. [LeetCode] Contiguous Array 邻近数组

    Given a binary array, find the maximum length of a contiguous subarray with equal number of 0 and 1. ...

  2. [CQOI 2015]选数

    Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公 ...

  3. [HAOI2011]向量

    题目描述 给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个向量 ...

  4. [HNOI2009]通往城堡之路

    题目描述 听说公主被关押在城堡里,彭大侠下定决心:不管一路上有多少坎坷,不管城堡中的看守有多少厉害,不管救了公主之后公主会不会再被抓走,不管公主是否漂亮.是否会钟情于自己,他将义无反顾地朝着城堡前进. ...

  5. Chtholly Nota Seniorious

    题目背景 大样例下发链接: https://pan.baidu.com/s/1nuVpRS1 密码: sfxg こんなにも.たくさんの幸せをあの人に分けてもらった だから.きっと 今の.私は 谁が何と ...

  6. [SDOI2009]HH去散步

    题目描述 HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又因为HH是个喜欢 ...

  7. 计蒜客NOIP模拟赛D2T2 直线的交点

    伦伦刚刚在高中学习了解析几何,学会了计算两条直线的交点.这天,老师给她布置了一道作业.在平面上有 nnn 条直线,他们之间有若干交点.给定一对平板(两条平行的直线),问这有多少对直线,他们的交点在这一 ...

  8. 【bzoj4443 scoi2015】小凸玩矩阵

    题目描述 小凸和小方是好朋友,小方给了小凸一个 nn × mm (n \leq m)(n≤m) 的矩阵 AA ,并且要求小凸从矩阵中选出 nn 个数,其中任意两个数都不能在同一行或者同一列.现在小凸想 ...

  9. bzoj4447[Scoi2015]小凸解密码

    4447: [Scoi2015]小凸解密码 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 150  Solved: 58[Submit][Status ...

  10. Python爬取腾讯新闻首页所有新闻及评论

    前言 这篇博客写的是实现的一个爬取腾讯新闻首页所有的新闻及其所有评论的爬虫.选用Python的Scrapy框架.这篇文章主要讨论使用Chrome浏览器的开发者工具获取新闻及评论的来源地址. Chrom ...