文档章节

android 中的 scrollView 控件的默认位置和子控件的焦点冲突

假装是大神
 假装是大神
发布于 2015/06/08 22:50
字数 468
阅读 145
收藏 0

最近在开发 dribbble 客户端, 遇到一个这样的问题。

在 scrollView 控件中,如果有子控件一开始就获得焦点,例如设置了 

android:focusable="true"

或者设置了 

android:textIsSelectable="true"

那么当 scrollView 第一次出现的时候,scrollView 会默认滑动到获得焦点的子控件位置,

为了修正这个问题,应该在 scrollView 控件的第一个子控件设置如下属性

android:focusable="true"
android:focusableInTouchMode="true"
android:descendantFocusability="beforeDescendants"


布局文件

<ScrollView
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:scrollbars="none"

   >

   <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical"
      >

      <ImageView
         android:id="@+id/shot_imageview"
         android:layout_width="match_parent"
         android:layout_height="200dp"
         android:src="@drawable/shot_empty"
         android:focusable="true"
         android:focusableInTouchMode="true"
         android:descendantFocusability="beforeDescendants"
         />

      <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:padding="@dimen/activity_vertical_margin"
         >

         <ImageView
            android:id="@+id/user_imageview"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/shot_empty"
            android:layout_marginRight="8dp"
            />

         <TextView
            android:id="@+id/username"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/user_imageview"
            android:layout_marginBottom="8dp"
            android:text="Jon Ivy"/>

         <ImageView
            android:id="@+id/view_imageview"
            android:layout_width="@dimen/shot_count"
            android:layout_height="@dimen/shot_count"
            android:layout_toRightOf="@+id/user_imageview"
            android:layout_below="@+id/username"
            android:src="@mipmap/view_off"
            android:layout_marginRight="6dp"
            />

         <TextView
            android:id="@+id/view_textview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/view_imageview"
            android:layout_below="@+id/username"
            android:text="999"/>

      </RelativeLayout>

      <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:padding="@dimen/activity_vertical_margin"
         >


         <LinearLayout
            android:id="@+id/comment"
            style="@style/count_style"
            >


            <ImageView
               android:layout_width="@dimen/shot_count"
               android:layout_height="@dimen/shot_count"
               android:padding="3dp"
               android:src="@mipmap/comment_off"
               />

            <TextView
               android:id="@+id/comment_textview"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="999"
               />

         </LinearLayout>

         <LinearLayout
            android:id="@+id/like"
            style="@style/count_style"
            >


            <ImageView
               android:layout_width="@dimen/shot_count"
               android:layout_height="@dimen/shot_count"
               android:padding="3dp"
               android:src="@mipmap/like"
               />

            <TextView
               android:id="@+id/like_textview"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="999"
               />

         </LinearLayout>

         <LinearLayout
            android:id="@+id/bucket"
            style="@style/count_style"
            >


            <ImageView
               android:layout_width="@dimen/shot_count"
               android:layout_height="@dimen/shot_count"
               android:src="@mipmap/bucket"
               android:padding="3dp"
               />

            <TextView
               android:id="@+id/bucket_textview"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="999"
               />

         </LinearLayout>

      </LinearLayout>

      <TextView
         android:id="@+id/descript_textview"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:padding="@dimen/activity_vertical_margin"
         android:textIsSelectable="true"
         />
   </LinearLayout>
</ScrollView>






© 著作权归作者所有

假装是大神
粉丝 16
博文 33
码字总数 7065
作品 0
广州
技术主管
私信 提问
加载中

评论(1)

假装是大神
假装是大神 博主
自己顶一个,哈。
ScrollView(RecyclerView等)为什么会自动滚动原理分析,还有阻止自动滑动的解决方

引言,有一天我在调试一个界面,xml布局里面包含Scroll View,里面嵌套了recyclerView的时候,界面一进去,就自动滚动到了recyclerView的那部分,百思不得其解,上网查了好多资料,大部分只是...

北辰丨丶
02/28
18
0
【详细】Android入门到放弃篇-YES OR NO-》各种UI组件,布局管理器,单元Activity

问:达叔,你放弃了吗? 答:不,放弃是不可能的,丢了Android,你会心疼吗?如果别人把你丢掉,你是痛苦呢?还是痛苦呢?~ 引导语 有人说,爱上一个人是痛苦的,有人说,喜欢一个人是幸福的...

达叔小生
2018/07/27
0
0
ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

ViewPager,ScrollView 嵌套ViewPager滑动冲突解决 这篇博客主要讲解一下几个问题 粗略地介绍一下View的事件分发机制 解决事件滑动冲突的思路及方法 ScrollView 里面嵌套ViewPager导致的滑动...

丁佳辉
2018/01/12
27
0
android GridView item中组件获取焦点

项目中在使用GridView控件时,里面的item有imageView、buttion等子控件。 但是GridView默认焦点是让item获取焦点,所以要使子控件获取焦点的话,要在gridview的属性中设置: android:descen...

blackylin
2013/04/08
5.1K
0
Android学习之Textview的一些属性解释

delia 动态改变控件的方法 1.声明控件参数获取的对象 LinearLayout.LayoutParams linear = (LayoutParams) view.getLayoutParams(); 2.设置控件参数,如宽度: linear.width = 10; 3.使得设...

程序袁_绪龙
2014/09/25
84
0

没有更多内容

加载失败,请刷新页面

加载更多

哪些情况下适合使用云服务器?

我们一直在说云服务器价格适中,具备弹性扩展机制,适合部署中小规模的网站或应用。那么云服务器到底适用于哪些情况呢?如果您需要经常原始计算能力,那么使用独立服务器就能满足需求,因为他...

云漫网络Ruan
今天
5
0
Java 中的 String 有没有长度限制

转载: https://juejin.im/post/5d53653f5188257315539f9a String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西...

低至一折起
今天
17
0
OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
11
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
9
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部