scrollview-如何给滚动视图设置成图像显示?

问题描述

如何给滚动视图设置成图像显示?
我使用水平滚动视图,并且在视图上动态的添加项目。如果项目的数量超过能在屏幕上能显示的数量,我想用如下图显示的,用箭头形式水平滚动来显示这些项目。怎么实现呢?
这是我使用的XML代码:

<HorizontalScrollView    android:layout_width=""wrap_content""   android:scrollbars=""none""   android:id=""@+id/app_category""   android:layout_below=""@+id/top_layout""      android:background=""@drawable/minitopbar""   android:layout_height=""30dp"">   <LinearLayout      android:orientation=""horizontal""     android:id=""@+id/app_category_scroll_layout""     android:layout_width=""wrap_content""                                 android:layout_height=""fill_parent""/></HorizontalScrollView>

解决方案

A.你应该创建自己的类,然后继承HorizontalScrollView

public class ExtendedHorizontalScrollView extends HorizontalScrollView {private IScrollStateListener scrollStateListener;public HorizontalScrollViewForMenu(Context context AttributeSet attrs int defStyle) {    super(context attrs defStyle);}public HorizontalScrollViewForMenu(Context context AttributeSet attrs) {    super(context attrs);}public HorizontalScrollViewForMenu(Context context) {    super(context);}@Overrideprotected void onLayout(boolean changed int l int t int r int b) {    super.onLayout(changed l t r b);    prepare();}private void prepare() {    if (scrollStateListener != null) {        View content = this.getChildAt(0);        if (content.getLeft() >= 0)            scrollStateListener.onScrollMostLeft();        if (content.getLeft() < 0)            scrollStateListener.onScrollFromMostLeft();        if (content.getRight() <= getWidth())            scrollStateListener.onScrollMostRight();        if (content.getLeft() > getWidth())            scrollStateListener.onScrollFromMostRight();    }}@Overrideprotected void onScrollChanged(int l int t int oldl int oldt) {    super.onScrollChanged(l t oldl oldt);    if (scrollStateListener != null) {        if (l == 0)            scrollStateListener.onScrollMostLeft();        else if (oldl == 0)            scrollStateListener.onScrollFromMostLeft();        int mostRightL = this.getChildAt(0).getWidth() - getWidth();        if (l >= mostRightL)            scrollStateListener.onScrollMostRight();        if (oldl >= mostRightL && l < mostRightL)            scrollStateListener.onScrollFromMostRight();    }}public void setScrollStateListener(IScrollStateListener listener) {    scrollStateListener = listener;}public interface IScrollStateListener {    void onScrollMostLeft();    void onScrollFromMostLeft();    void onScrollMostRight();    void onScrollFromMostRight();}}

B.使用它来定义布局

<LinearLayout      .....>    <ImageView        android:id=""@+id/navigation_left""        ..... />    <your.custom.view.package.ExtendedHorizontalScrollView        android:id=""@+id/scroller""        android:layout_width=""0px""        android:layout_weight=""1""        android:fadingEdge=""none""                ....>        <LinearLayout            android:orientation=""horizontal""            android:layout_width=""match_parent""            android:layout_height=""match_parent"" />    </your.custom.view.package.ExtendedHorizontalScrollView>    <ImageView        android:id=""@+id/navigation_right""        ..... /></LinearLayout>

C.当不能水平滚动的时候,给箭头添加以下逻辑:

((ExtendedHorizontalScrollView)findViewById(R.id.scroller)).setScrollStateListener(new IScrollStateListener() {        public void onScrollMostRight() {            ((View) scroller.getParent()).findViewById(R.id.navigation_right).setVisibility(View.INVISIBLE);        }        public void onScrollMostLeft() {            ((View) scroller.getParent()).findViewById(R.id.navigation_left).setVisibility(View.INVISIBLE);        }        public void onScrollFromMostLeft() {            ((View) scroller.getParent()).findViewById(R.id.navigation_left).setVisibility(View.VISIBLE);        }        public void onScrollFromMostRight() {            ((View) scroller.getParent()).findViewById(R.id.navigation_right).setVisibility(View.VISIBLE);        }    });

解决方案二:
一个简单的方法是让scrollview没有边缘然后在scrollview上面或下面添加带箭头的图像。

<FrameLayout        android:layout_width=""fill_parent""        android:layout_height=""fill_parent"">        <ListView            android:layout_width=""fill_parent""            android:layout_height=""fill_parent""            android:layout_alignParentTop=""true""            android:fadingEdge=""none""        />        <RelativeLayout             android:layout_width=""fill_parent""            android:layout_height=""fill_parent"">            <View                android:layout_height=""6dp""                android:layout_width=""fill_parent""                android:layout_alignParentBottom=""true""                android:background=""@drawable/background_effect""/>        </RelativeLayout>    </FrameLayout>
时间: 2024-09-17 04:54:04

scrollview-如何给滚动视图设置成图像显示?的相关文章

java-如何把视图设置成垂直的?

问题描述 如何把视图设置成垂直的? 从 xml 代码中看,我觉的这里设置的视图相对于其它的应该是垂直显示,但相反,他们堆叠到一块.错误出现在哪呢? <RelativeLayout android:id="@+id/top_lay2" android:layout_below="@id/top_lay1" android:layout_width="fill_parent" android:layout_marginTop="10d

Android零基础入门第61节:滚动视图ScrollView

原文:Android零基础入门第61节:滚动视图ScrollView    前面几期学习了ProgressBar系列组件.ViewAnimator系列组件.Picker系列组件和时间日期系列组件,接下来几期继续来学习常见的其他组件.     一.ScrollView概述       从前面的学习有的同学可能已经发现,当拥有很多内容时屏幕显示不完,显示不全的部分完全看不见.但是在实际项目里面,很多内容都不止一个屏幕宽度或高度,那怎么办呢?那就需要本节学习的ScrollView来完成.     在默

Android开发入门(五)屏幕组件 5.7 ScrollView滚动视图

ScrollView是一种特殊的FrameLayout,使用ScrollView可以使用户能够滚动一个包含views的列表,这样 做的话,就可以利用比物理显示区域更大的空间.有一点需要注意一下,那就是ScrollView只能包含一个子 视图view或ViewGroup(这个ViewGroup通常是LinearLayout). 不要混合使用ListView和ScrollView .ListView被设计用来显示一些相关的信息,同时,ListView也已经被优化了去显示大量的列表lists. 下面的

ios之UIScrollerView滚动视图

UIScrollView 类负责所有基于 UIKit 的滚动操作. 一.创建 [java] view plaincopy CGRect bounds = [ [ UIScreen mainScreen ] applicationFrame ] ;   UIScrollView* scrollView = [ [UIScrollView alloc ] initWithFrame:bounds ];   当你创建完滚动视图后,你可以将另一个视图的内容粘合到滚动视图的空白页上.这回创建一个滚动的内容

滑动-有CCScrollView滚动视图中添加滚动条示例

问题描述 有CCScrollView滚动视图中添加滚动条示例 就像手机QQ或者微信聊天界面似的左边那条滚动条,当你滑动页面的时候滚动条就显示在当前文本的具体位置,不滑动的时候滚动条就消失,滚动条还随着文本内容的多少而发生长短变化 解决方案 class CCBarScrollView:public ScrollView { public: static CCBarScrollView* create(Size size, Node* container = NULL); static CCBarS

iOS 高性能异构滚动视图构建方案 —— LazyScrollView

##LazyScroll是什么 LazyScrollView 继承自ScrollView,目标是解决异构(与TableView的同构对比)滚动视图的复用回收问题.它可以支持跨View层的复用,用易用方式来生成一个高性能的滚动视图.此方案最先在天猫iOS客户端的首页落地. 为什么要用LazyScrollView 猫客首页之前首页的View比较少,不需要复用和回收也有很优秀的性能,但是之后首页的View数量逐渐膨胀,没有一套复用回收机制的ScrollView已经影响到性能了,迫切需要处理对Scrol

【IOS-COCOS2D游戏开发之十六】添加本地通知(UILOCALNOTIFICATION)以及添加系统组件滚动视图(UISCROLLVIEW)!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2d/492.html -----[11月28日更新解决添加组件Cocos2d动画停止播放的BUG]--– [iOS-Cocos2d游戏开发之七]在cocos2d中添加/删除系统组件,并解决View设置透明会影响View中的其他组件的问题[11月28日更新解决添加组件Cocos2d动画停止播放的BUG]! 首先申明下:

Win7系统文件夹视图设置

Win7系统有很多个性化设置,其中有一项就是提供了文件夹的单独视图设置,我们可以在不同的文件夹中选择不同的视图,比如列表.小图标.大图标,详细资料等等.不过有些朋友喜欢让Win7系统中所有的文件夹都使用同一种视图设置,设置方法也非常简单.来!下面一起看看如何让Win7系统中所有的文件夹视图"向我看齐"! 随意打开一个文件夹,点击"更改您的视图"按钮 ,设置好自己最习惯的视图方式,比如"列表". 小技巧:反复点击"更改您的视图"

如何在win8电脑中关闭IE浏览器的兼容性视图设置?

  Win8系统在很多方面功能确实要比w764位旗舰版强大许多,这一点咱们倒是不予否认,但是不得不说,在一个地方,win8系统似乎是比不上咱们的win7旗舰版系统的,那便是系统的兼容性上,兼容性甚至已经成为了win8系统最大的诟病.这不,今天就有一位使用win8系统的用户表示,自己在win8电脑的IE浏览器中设置了兼容性视图之后,在IE浏览器中打开一些网页就会出现显示不正常的情况,那么如何才能将这个兼容性视图取消呢?下面,小编就来详细的介绍一下操作方法吧! 1.首先,咱们需要返回到win8电脑的