`
yr512656630
  • 浏览: 320366 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ScrollView下放置button

阅读更多
http://dev.10086.cn/cmdn/bbs/thread-21816-1-1.html




最近做项目时遇到了这个问题,想要在ScrollView之后显示元素,无论怎么调整Layout的布局,此元素总是无法正确显示——不是跟在ScrollView最下面,就是干脆不显示;着实让人头痛。
依靠万能的Google总是能够得到些许启发。终于让偶找到了类似的做法。
示例代码如下:
view source
print?
01 <LinearLayout android:layout_height="fill_parent"
02 android:layout_width="fill_parent" android:orientation="vertical"
03 xmlns:android="http://schemas.android.com/apk/res/android">
04
05 ...
06
07 <ScrollView android:fillViewport="true"
08 android:layout_height="wrap_content"
09 android:layout_width="fill_parent"
10 android:layout_marginBottom="50dip">
11
12 ...
13
14 </ScrollView>
15
16 <Button android:layout_width="wrap_content" android:layout_height="wrap_content"
17 android:text="I'm below ScrollView"
18 android:layout_marginTop="-50dip" />
19 </LinearLayout>
以上代码实现的效果就是这样的:

看起来,下面的按钮浮于Layout的上面,其实滚动条滚动到按钮的上边缘就结束了。注意上述代码中的ScrollView&Button元素内的参数,分别是layout_marginBottom&layout_marginTop。

不过上述此法并非最佳,为何?也有如此一种情况——紧跟在ScrollView之后的不是静态内容,而是动态的,怎么办?如果是动态的,意味着这部分内容是随时显示的,按照上面的做法,在内容没有显示出来的情况下 ,仍然会出现50dip的占用区域,这对Layout整体效果大打折扣了,看图便知:
这个时候"I’m below ScrollView”按钮已经隐藏了,但是依然留下了那龌龊的一块,有图为证。


以下代码将解决这个问题:
view source
print?
01 <LinearLayout android:layout_height="fill_parent"
02 android:layout_width="fill_parent" android:orientation="vertical"
03 xmlns:android="http://schemas.android.com/apk/res/android">
04
05 ...
06
07 <ScrollView android:fillViewport="true"
08 android:layout_height="wrap_content"
09 android:layout_width="fill_parent"
10 android:layout_weight="1">
11
12 ...
13
14 </ScrollView>
15
16 ...
17
18 </LinearLayout>
注意到了么?去除layout_margin Bottom&layout_marginTop属性,在ScrollView元素中加入android:layout_weight=”1”即可。
演示效果如下:

      「按钮没出现时」
Look!在没有出现那部分内容时,滚动条一直到底,只有出现"I’m below ScrollView”按钮时,滚动条才会往上移动,效果如下:

         「按钮出现」
这个方法是不是很灵光呢?的确如此,至少解决了我的项目问题。但是有个值得开发人员注意的地方,那就是顶级容器只能是LinearLayout。
上面只讲到了ScrollView之后的元素,还有一个控件会出现滚动条,那就是ListView,这个控件就更加简单了,只有在之后的元素添加上一个属性就行,例如把上面的"I'm below ScrollView”按钮的android:layout_alignParentBottom属性设置为"true”即可。
还有其他很多种情况,或许你还会遇到ListView和ScrollView共存,这些有待你们自己去探索了。
其实,很多Android程序员都被页面的布局所困扰,其实不用太担心和害怕它,掌握几点原则就行了:
(1) 越简单越好
(2) 如果复杂,尽量确保顶级Layout是LinearLayout
(3) 尽量不要嵌套很多Layout,这会造成性能的大减
(4) 巧妙运行FrameLayout,它能带来很多意想不到的效果
(5) 尽量别用AbsoluteLayout,布局很难调整,兼容性很差
分享到:
评论

相关推荐

    Android平台下使用ScrollView滚动效果代码

    为了优化性能,需要注意避免在ScrollView中放置过多的视图或大图片,因为这可能导致滚动不流畅。如果必须这样做,可以考虑使用ListView、RecyclerView或者分页加载内容。 在提供的`ScrollViewDemo`项目中,你可以...

    ScrollView版悬浮菜单

    2. **布局设计**:在XML布局文件中,首先添加`ScrollView`作为根布局,然后在其中放置其他内容视图。接着,添加`FloatingActionButton`,并设置其属性,如`app:fabSize`(大小)、`android:layout_gravity`(位置)...

    Unity ScrollView实现动态列表生成

    1. **Content下的自定义列表内容**:在Content下,我们需要放置列表项(items)。这些items通常是游戏对象(GameObjects),例如Button,用于交互。在这个例子中,每个item被设计为一个Button,因为项目需求点击列表...

    Android ScrollView只能添加一个子控件问题解决方法

    这个限制可能会给开发者带来困扰,因为有时我们需要在ScrollView内放置多个控件,如多个按钮、文本视图或图像视图。针对这个问题,有一种巧妙的解决方法,即通过嵌套布局来实现。 如描述中所示,当尝试将多个子控件...

    ios-UIScrollView上添加多个TableView.zip

    在ScrollView上方,放置了四个TableView,每个TableView可能代表不同的数据类别或者视图。这种设计允许用户在一个页面内浏览多份列表数据,提高了信息的可读性和交互性。 接下来,我们关注到描述中的“四个Button”...

    支持水平滚动视图ScrollView效果

    在Android开发中,ScrollView通常被用来创建可滚动的布局,但默认情况下,它仅支持垂直滚动。然而,通过一些特定的设置和自定义组件,我们也可以实现水平滚动的效果。这个"支持水平滚动视图ScrollView效果"的主题...

    Android实现ListView的Item滑动删除

    在HorizontalScrollView内,我们可以放置一个包裹了删除按钮的布局,初始时隐藏删除按钮。 代码示例: ```xml android:id="@+id/horizontal_scroll_view" android:layout_width="match_parent" android:...

    Android开发实现标题随scrollview滑动变色的方法详解

    为了实现标题背景颜色的变化,我们需要将标题View放置在ScrollView外部,这样它就不会随着ScrollView的滚动而移动。同时,ScrollView内应包含需要滚动的内容。以下是一个基本的XML布局示例: ```xml android:...

    KGUI使用说明1

    2. 在 ScrollView 内部添加 Viewport,再在 Viewport 中放置 KGUI_Panel 容器,用于处理滚动事件。 3. Content 物体决定滚动视图的大小,影响滚动条的显示与否。 4. 注意视图布局的宽度和高度匹配,以确保正确显示...

    android 悬浮框

    - 项目中可能包括了XML布局文件,展示了如何在ScrollView和ListView中放置悬浮按钮,并使用Java或Kotlin代码处理滚动事件和固定逻辑。 - 解压TopFlowDemo并查看源码,可以更深入地理解这种实现方式,包括事件监听...

    react-native-datos:ScrollView TextInput按钮文本FlatList SectionList ApiData

    1. **ScrollView**: `ScrollView`是React Native中的滚动视图容器,它允许你在一个可滚动的区域里放置多个组件。你可以设置垂直或水平滚动,并且可以结合`KeyboardAvoidingView`以防止输入框被键盘遮挡。`ScrollView...

    dialog 实现布局

    -- 这里放置你的内容视图,例如TextView、EditText等 --&gt; &lt;/ScrollView&gt; android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity...

    Android View常用组件

    -- 在这里放置需要滚动的内容 --&gt; &lt;/ScrollView&gt; ``` 八、复选框(CheckBox)与单选按钮(RadioButton) CheckBox用于多选,RadioButton用于单选。它们通常结合RadioGroup一起使用。 ```xml android:layout_width=...

    NGUI官网示例详解(下)

    【NGUI官网示例详解(下)】 NGUI是Unity3D引擎中广泛使用的界面制作工具,特别适合创建复杂的GUI系统。本示例是NGUI官方提供的13个实例的详细解析,旨在帮助用户深入理解并掌握NGUI的主要功能。 在NGUI官网示例8 ...

    HorizontalScrollView横向显示Demo

    在这个例子中,HorizontalScrollView包含一个LinearLayout,其中放置了多个Button。由于HorizontalScrollView的宽度设置为`match_parent`,高度设置为`wrap_content`,它会根据其内容宽度进行伸展,允许用户水平滑动...

    transformToolbar

    为了确保其始终在屏幕底部可见,我们需要对其进行适当的布局管理,比如将其放置在一个`CoordinatorLayout`内,然后使用`Behavior`来控制它的行为。 关于`scrollview`和`recycleview`滑动冲突的问题,当一个父容器...

    RunTest可执行文件

    它提供了丰富的UI组件,如Button、InputField、Panel、ScrollView等,以满足复杂的游戏界面需求。在Sprite动画播放方面,NGUI支持序列帧动画,允许开发者通过设置精灵的多个状态来实现动态效果。 回到RunTest,这个...

Global site tag (gtag.js) - Google Analytics