你的位置:首页 > 操作系统

[操作系统]机顶盒上gridview+ScrollView的使用。


最近在机顶盒上做一个gridview,

其焦点需要在item的子控件上,但gridview的焦点默认在item上,通过

android:descendantFocusability="afterDescendants"

<ScrollView    android:id="@+id/scroll_content"    android:layout_width="1740.0px"    android:layout_height="600.0px"    android:layout_x="81.0px"    android:layout_y="258.0px" >    <com.hysmarthotel.view.MyGridView      android:id="@+id/lightview"      android:layout_width="match_parent"        android:layout_height="match_parent"      android:descendantFocusability="afterDescendants"      android:horizontalSpacing="58dp"      android:numColumns="4"      android:scrollbars="none"      android:stretchMode="columnWidth"      android:verticalSpacing="80dp" />  </ScrollView>

 

可以让gridview的子控件获得焦点。但是加了这个属性之后,gridview就会变得无法滚动,后来我就给gridview加了一个ScrollView,

但由于它们两个都有滚动条,所以我重写了一个gridview,让其滚动条消失。终于成功地让gridview可以一直让子控件获得焦点,并且可以顺利

滚动。

package com.hysmarthotel.view;import android.content.Context;import android.util.AttributeSet;import android.widget.GridView;public class MyGridView extends GridView {   public MyGridView(Context context, AttributeSet attrs) {     super(context, attrs);   }   public MyGridView(Context context) {     super(context);   }   public MyGridView(Context context, AttributeSet attrs, int defStyle) {     super(context, attrs, defStyle);   }   @Override   public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {     int expandSpec = MeasureSpec.makeMeasureSpec(         Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);     super.onMeasure(widthMeasureSpec, expandSpec);   } } 

 

ps:我的布局是绝对布局,以及关于item的布局和adapter的代码没什么特别的。CheckBox焦点等级很高。