Android 自定义当ScrollView里面嵌套GridView计算高度并获得焦点

1、xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"
    android:descendantFocusability="blocksDescendants"
    android:orientation="vertical" >

    <!-- android:descendantFocusability="blocksDescendants" -->
    <!-- android:focusable="false" -->

    <ScrollView
        android:id="@+id/scroll"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:fadingEdgeLength="0dp"
        android:focusable="false"
        android:scrollbars="none" >

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

            <ImageView
                android:id="@+id/image"
                android:layout_width="fill_parent"
                android:layout_height="150dp"
                android:padding="2dp"
                android:scaleType="centerCrop"
                android:src="@drawable/ic_launcher" />

            <com.scrollview.gridview.MyGridView
                android:id="@+id/grid"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_marginTop="10dp"
                android:fadingEdgeLength="0dp"
                android:numColumns="3"
                android:scrollbars="none" />
        </LinearLayout>
    </ScrollView>

</LinearLayout>

2、设置高度

package com.scrollview.gridview;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;

/***
 * 设置高度
 * 
 * @author GuoJian
 * 
 */
public class MyGridView extends GridView {

	public MyGridView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}
	public MyGridView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}
	public MyGridView(Context context) {
		super(context);
	}

	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
		super.onMeasure(widthMeasureSpec, expandSpec);

	}

}

3、activity

package com.scrollview.gridview;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

/***
 * activity
 * 
 * @author GuoJian
 * 
 */
public class MainActivity extends Activity {

	private MyGridView grid;
	private String[] texts = new String[] { "无线", "通话设置", "声音", "显示", "位置", "应用", "账户", "隐私权", "存储", "语言", "游戏", "娱乐",
			"电影", "音乐", "辅助功能", "日期" };

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		init();
	}

	void init() {
		grid = (MyGridView) findViewById(R.id.grid);
		grid.setAdapter(new GridAdapter(this));
	}

	private class GridAdapter extends BaseAdapter {

		Activity context;

		public GridAdapter(Activity context) {
			this.context = context;
		}

		@Override
		public int getCount() {
			return texts.length;
		}

		@Override
		public Object getItem(int position) {
			return null;
		}

		@Override
		public long getItemId(int position) {
			return 0;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ViewHolder holder = null;
			if (convertView == null) {
				convertView = context.getLayoutInflater().inflate(R.layout.grid_view_item, null);
				holder = new ViewHolder();
				holder.image = (ImageView) convertView.findViewById(R.id.iv_image);
				holder.text = (TextView) convertView.findViewById(R.id.grid_text);
				convertView.setTag(holder);
			} else {
				holder = (ViewHolder) convertView.getTag();
			}
			holder.image.setImageResource(R.drawable.ic_launcher);
			holder.text.setText(texts[position]);
			return convertView;
		}

		class ViewHolder {
			ImageView image;
			TextView text;
		}
	}
}


发布了19 篇原创文章 · 获赞 12 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/u014051380/article/details/21122387