Android:UI控件scrollView、TabHost

简介:

UI控件scrollView:

容器内最外层只能有一个布局。


UI控件TabHost:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public  class  MainActivity  extends  TabActivity //继承TabActivity
{
     @Override
     protected  void  onCreate(Bundle savedInstanceState)
     {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
                       
         TabHost tabHost = getTabHost();
                       
         /**
          * 自定义创建TabHost方法
          */
         //TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost);
         //tabHost.setup();
                       
         tabHost.addTab(tabHost.newTabSpec( "" ).setIndicator( "title1" ,
                 getResources().getDrawable(R.drawable.ic_launcher)) //设置tab背景图
                 .setContent( new  Intent( this , Second. class )));
                               
         tabHost.addTab(tabHost.newTabSpec( "" ).setIndicator( "title1" )
                 .setContent( new  Intent( this , Second. class )));
                       
         tabHost.addTab(tabHost.newTabSpec( "" ).setIndicator( "title1" )
                 .setContent( new  Intent( this , Second. class )
                 .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))); //Activity的启动模式
     }
                   
     @Override
     public  boolean  onCreateOptionsMenu(Menu menu)
     {
         getMenuInflater().inflate(R.menu.main, menu);
         return  true ;
     }
}




scrollView相关:

  1. 监听scrollView滚动到底部:

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
     /**
      * ******************增加滚动监听接口*****************************
      */
     private  OnScrollListener onScrollListener;
     
     /**
      * 设置滚动接口
     
      * @param onScrollListener
      */
     public  void  setOnScrollListener(OnScrollListener onScrollListener)
     {
         this .onScrollListener = onScrollListener;
     }
     
     @Override
     protected  void  onScrollChanged( int  x,  int  y,  int  oldx,  int  oldy)
     {
         super .onScrollChanged(x, y, oldx, oldy);
         if  (onScrollListener !=  null )
         {
             onScrollListener.onScroll(x, y, oldx, oldy);
             
             //是否滚动到底部
             if (getScrollY() + getHeight() >= computeVerticalScrollRange() )
             {
                 onScrollListener.onScrollBottom(x, y, oldx, oldy);
             }
         }
         
     }
     
     /**
      * 滚动的回调接口
      */
     public  interface  OnScrollListener
     {
         /**
          * 回调方法, 返回ScrollView滑动的各方向距离
          */
         public  void  onScroll( int  x,  int  y,  int  oldx,  int  oldy);
         public  void  onScrollBottom( int  x,  int  y,  int  oldx,  int  oldy);
     }



2.使scrollview内的子控件充满整个屏幕,需要设置android:fillViewport="true"属性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
                 <ScrollView
                     android:layout_width= "match_parent"
                     android:layout_height= "match_parent"
                     android:fillViewport= "true"  >
 
                     <LinearLayout
                         android:layout_width= "match_parent"
                         android:layout_height= "fill_parent"
                         android:orientation= "vertical"  >
 
                         <!-- 滚动框内布局 -->
 
                         <LinearLayout
                             android:layout_width= "fill_parent"
                             android:layout_height= "fill_parent"
                             android:orientation= "vertical"  >



3.scrollTo() 是直接指定滚动条的位置, 但是由于这个动作不是单纯关于 ScrollView 而已, 还要根据 ScrollView 里面包含的View 的实际信息. 所以这动作必须在页面加载完成以后才能执行. 




4.网上说的方法乱七八糟,能用的就是自己算高度,其实sdk-9中,ScrollView已经加入了一个方法,能监听到是否已经不能滚动,稍加处理,就可以监听是否滑到底部了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import  android.content.Context;
import  android.util.AttributeSet;
import  android.widget.ScrollView;
public  class  BottomScrollView  extends  ScrollView {
     private  OnScrollToBottomListener onScrollToBottom;
     
     public  BottomScrollView(Context context, AttributeSet attrs) {
         super (context, attrs);
     }
     public  BottomScrollView(Context context) {
         super (context);
     }
     @Override
     protected  void  onOverScrolled( int  scrollX,  int  scrollY,  boolean  clampedX,
             boolean  clampedY) {
         super .onOverScrolled(scrollX, scrollY, clampedX, clampedY);
         if (scrollY !=  0  &&  null  != onScrollToBottom){
             onScrollToBottom.onScrollBottomListener(clampedY);
         }
     }
     
     public  void  setOnScrollToBottomLintener(OnScrollToBottomListener listener){
         onScrollToBottom = listener;
     }
     public  interface  OnScrollToBottomListener{
         public  void  onScrollBottomListener( boolean  isBottom);
     }
}





本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1209844,如需转载请自行联系原作者
目录
相关文章
|
18天前
|
存储 消息中间件 人工智能
【04】AI辅助编程完整的安卓二次商业实战-寻找修改替换新UI首页图标-菜单图标-消息列表图标-优雅草伊凡
【04】AI辅助编程完整的安卓二次商业实战-寻找修改替换新UI首页图标-菜单图标-消息列表图标-优雅草伊凡
51 4
|
5月前
|
XML 搜索推荐 Android开发
Android改变进度条控件progressbar的样式(根据源码修改)
本文介绍了如何基于Android源码自定义ProgressBar样式。首先分析了系统源码中ProgressBar样式的定义,发现其依赖一张旋转图片实现动画效果。接着分两步指导开发者实现自定义:1) 模仿源码创建一个旋转动画XML文件(放置在drawable文件夹),修改图片为自定义样式;2) 在UI控件中通过`indeterminateDrawable`属性应用该动画。最终实现简单且个性化的ProgressBar效果,附带效果图展示。
278 2
|
5月前
|
Android开发
Android控件样式的抽取(小提及快捷方式)
在Android开发中,若多个控件样式重复,可抽取公共部分以简化代码。例如对EditText提取样式,通过编辑`styles.xml`实现复用。为提高效率,Android Studio提供自动提取Style功能:右键点击控件样式选项,选择“Style...”,勾选需要提取的属性后确认,即可快速生成样式代码,显著提升开发便利性。
145 2
|
11月前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
10月前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
8953 5
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
10月前
|
前端开发 Linux C#
一款开源、免费、美观的 Avalonia UI 原生控件库 - Semi Avalonia
一款开源、免费、美观的 Avalonia UI 原生控件库 - Semi Avalonia
805 10
|
10月前
|
XML 搜索推荐 前端开发
安卓开发中的自定义视图:打造个性化UI组件
在安卓应用开发中,自定义视图是一种强大的工具,它允许开发者创造独一无二的用户界面元素,从而提升应用的外观和用户体验。本文将通过一个简单的自定义视图示例,引导你了解如何在安卓项目中实现自定义组件,并探讨其背后的技术原理。我们将从基础的View类讲起,逐步深入到绘图、事件处理以及性能优化等方面。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
11月前
|
人工智能 API Apache
推荐3款开源、美观且免费的WinForm UI控件库
推荐3款开源、美观且免费的WinForm UI控件库
1878 6
|
11月前
|
XML 前端开发 Android开发
Android:UI:Drawable:View/ImageView与Drawable
通过本文的介绍,我们详细探讨了Android中Drawable、View和ImageView的使用方法及其相互关系。Drawable作为图像和图形的抽象表示,提供了丰富的子类和自定义能力,使得开发者能够灵活地实现各种UI效果。View和ImageView则通过使用Drawable实现了各种图像和图形的显示需求。希望本文能为您在Android开发中使用Drawable提供有价值的参考和指导。
241 2
|
11月前
|
API C# 开发者
基于Material Design风格开源、免费的WinForms UI控件库
基于Material Design风格开源、免费的WinForms UI控件库!
256 0

热门文章

最新文章

  • 1
    Android实战经验之Kotlin中快速实现MVI架构
    344
  • 2
    即时通讯安全篇(一):正确地理解和使用Android端加密算法
    211
  • 3
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    553
  • 4
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    854
  • 5
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    313
  • 6
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    230
  • 7
    Android历史版本与APK文件结构
    739
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    245
  • 9
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    259
  • 10
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    491