ScrollView滚动布局使用原理:

①滚动产生的条件是,里面的内容大于物理尺寸

②ScrollView里面只有一个子元素,这个子元素就是一个线性布局LinearLayout,我们可以在线性布局中添加我们需要的内容,所以ScrollView中得包裹一层,并且线性布局中设计的方向必须纵向;再加任何其他的标签都是错误的,如果加标签,应该在LinearLayout里加

③不要把ScrollView和ListView放在一起用

第一种是静态布局如下:

<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"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.android_scrollview.MainActivity" ><ScrollViewandroid:id="@+id/scrollView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_alignParentLeft="true"android:layout_alignParentRight="true"android:layout_alignParentTop="true" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical" ><ImageView android:src="@drawable/a"android:layout_width="match_parent"android:layout_height="wrap_content"/><ImageView android:src="@drawable/b"android:layout_width="match_parent"android:layout_height="wrap_content"/><ImageView android:src="@drawable/a"android:layout_width="match_parent"android:layout_height="wrap_content"/></LinearLayout></ScrollView></RelativeLayout>

第二种是动态如下

package com.example.android_scrollview;import com.example.android_scrollview.R.layout;import android.support.v7.app.ActionBarActivity;
import android.graphics.drawable.Drawable;
import android.media.Image;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
import android.widget.LinearLayout;public class MainActivity extends ActionBarActivity {//动态加载图片private LinearLayout linearLayout;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//scrollView=(ScrollView) this.findViewById(R.id.scrollView1);linearLayout=(LinearLayout) this.findViewById(R.id.linearLayout1);for(int i=0;i<10;i++){ImageView imageView=new ImageView(this);Drawable drawable=getResources().getDrawable(R.drawable.a);//加载图片imageView.setImageDrawable(drawable);linearLayout.addView(imageView, i);}}@Overridepublic 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;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}
}

布局效果图如下

案例:把新闻内容显示到手机上

在eclipse中创建一个ScrollView_web工程,在里面创建一个news.html,启动Servers服务器

在AndroidMainfest.xml中加上网络授权:<uses-permission android:name="android.permission.INTERNET"/>

方法:点击AndroidMainfest.xml中的Permission,点击Add,然后点击Uses Permission中找到permission.INTERNET

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.android_scrollview"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="21" /><uses-permission android:name="android.permission.INTERNET"/><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name=".MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

编写工具类HttpUtils.java

package com.example.android_scrollview.http;import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;public class HttpUtils {/*** * @param path* @param encoding* @return*/public static String sendPostMethod(String path,String encoding){String result="";HttpClient httpClient=new DefaultHttpClient();try {HttpPost post=new HttpPost(path);HttpResponse response=httpClient.execute(post);if(response.getStatusLine().getStatusCode()==200){result=EntityUtils.toString(response.getEntity(),encoding);}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}finally{httpClient.getConnectionManager().shutdown();}return result;}
}

MainActivity.java

package com.example.android_scrollview;import com.example.android_scrollview.http.HttpUtils;import android.support.v7.app.ActionBarActivity;
import android.text.Html;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.LinearLayout;
import android.widget.TextView;public class MainActivity extends ActionBarActivity {//动态加载图片private LinearLayout linearLayout;private ProgressDialog dialog;private final String HTML_PATH="http://192.168.1.100:8080/scrollView_web/news.html";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);linearLayout=(LinearLayout) this.findViewById(R.id.linearLayout1);dialog=new ProgressDialog(this);dialog.setTitle("提示");dialog.setMessage("loading...");new MyTask().execute(HTML_PATH);}//由于要访问网络,所以写一个线程class MyTask extends AsyncTask<String, Void, String>{@Overrideprotected void onPreExecute() {// TODO Auto-generated method stubsuper.onPreExecute();dialog.show();}@Overrideprotected String doInBackground(String... params) {// TODO Auto-generated method stubString result=HttpUtils.sendPostMethod(params[0], "utf-8");return result;}@Overrideprotected void onPostExecute(String result) {// TODO Auto-generated method stubsuper.onPostExecute(result);TextView textView=new TextView(MainActivity.this);Spanned spanned=Html.fromHtml(result);//过滤HTML标签textView.setText(spanned);textView.setMovementMethod(new LinkMovementMethod());//处理HTML中超链接的事件linearLayout.addView(textView);dialog.dismiss();}}@Overridepublic 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;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}
}

运行效果图

Android之ScrollView滚动布局控件使用以及显示新闻网页相关推荐

  1. ScrollView 滚动视图控件

    为什么要用ScrollView 滚动视图控件 应为手机屏幕过小显示的内容过多没法显示完全所以要使用滚动视图控件 使用时的注意点 不用再ScrollView内部使用自带滚动条的控件或布局 ScrollV ...

  2. Android Studio 安卓 常用布局控件

    布局: 1.LinearLayout–线性布局 Frameloayout-- 帧布局 TableLayout–表格布局 RelativeLayout–相对布局 控件: TextView–显示文本 Ed ...

  3. 【Android】7.1 布局控件常用的公共属性

    分类:C#.Android.VS2015: 创建日期:2016-02-10 一.简介 Android应用程序中的布局控件都是容器控件,用于控制子元素的排列和放置方式.Android提供的布局控件有: ...

  4. 【转】unity3d 在UGUI中制作自适应调整大小的滚动布局控件

    转自 http://blog.csdn.net/rcfalcon/article/details/43459387 在游戏中,我们很多地方需要用到scroll content的概念:我们需要一个容器, ...

  5. android侧滑布局,Android布局控件DrawerLayout实现完美侧滑效果

    drawerLayout其实是一个布局控件,跟LinearLayout等控件是一样的,但是drawerLayout带有滑动的功能.只要按照drawerLayout的规定布局方式写完布局,就能有侧滑的效 ...

  6. Android开发的之基本控件和详解四种布局方式

    Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方 ...

  7. Mono for Android布局控件属性小结

    1. layout_weight 用于给一个线性布局中的诸多视图的重要度赋值. 所有的视图都有一个layout_weight值,默认为零,意思是需要显示 多大的视图就占据多大的屏幕空 间.若赋一个高于 ...

  8. Android布局控件之LinearLayout详解

    LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,按照相对位置来排列所有的widgets或者其他的containers,超过边界时,某些控件将缺失或消失.因此一个垂直列表 ...

  9. android excel布局,Androidui布局控件(2)表格布局excelPanel

    推荐理由 RecycleView定制组件 支持向左,向右加载过去,未来数据 列行表头锁定 作为表格布局,可以作为您的ui公共组件库里面的一员,你可以二次开发,让它变得更加可定制化,可扩展,更强大 In ...

最新文章

  1. 适配iOS 13 tabbar 标题字体不显示以及返回变蓝色的为问题
  2. Template Method(模板方法)模式
  3. 谈C/C++指针精髓
  4. Java多线程分析案例
  5. 用几条shell命令快速去重10G数据
  6. mysql 10进制转2进制_Oracle 10进制转换2进制
  7. 字节月薪6万招 kubernetes 开发,看到要求我傻眼了……
  8. 三星识别文字_比亚迪电子助力三星Galaxy Note 10系列霸气首发!
  9. 给你的数据来一个顶层设计
  10. 2015年创业中遇到的技术问题:21-30
  11. 程序猿必须要知道的一个内容:客户端+服务端一(源码解析、建议收藏)
  12. TatukGIS - GisDefs - CheckFileWriteAccess 函数
  13. wps怎么图片透明_wpsword如何设置图片透明度
  14. 论文笔记:ALA loss:Adaptive Logit Adjustment Loss for Long-Tailed Visual Recognition
  15. 数字漫画行业繁花似锦,国漫扎根本土文化“向外生长”?
  16. 【Python游戏】用Python基于centernet在win10平台开发,射击游戏 | 附带源码
  17. 海康iSecure Center 综合安防管理平台安装部署教程 - CentOS系统
  18. 中国矿业大学2020岁末赛校赛wp
  19. 【数据库】oracle数据库当中的dual表是个什么东西?
  20. 小技巧-ios手机fixed不支持问题

热门文章

  1. CRT进入数据库命令
  2. 全手写resnet50,分分钟识别“十二生肖“图片
  3. svg背景_具有SVG和混合模式的波普艺术背景
  4. 如果五代时的后周皇帝柴荣没有英年早逝,历史将会有怎样的变化?
  5. Win10设置IP出错:出现了一个意外的情况,不能完成所有你在设置中所要求的更改
  6. 利用MFC绘制Excel数据的波形
  7. vue 集成epub.js
  8. NBA 史上实力最弱的球队是哪个?用 Python + SQL 我们找到了答案
  9. 2018-1-11-【转】PHP简洁之道
  10. Leetcode-买卖股票的时机