import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ListView;
public class MyListView extends ListView {
public MyListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
getParent().requestDisallowInterceptTouchEvent(true);
return super.dispatchTouchEvent(ev);
}
}
public class MainActivity extends Activity {
private MyListView lv;
String str[] = { "abc", "abc", "abc", "abc", "abc", "abc", "abc", "abc",
"abc", "abc", "abc", "abc", "abc", "abc", "abc", "abc", "abc",
"abc", "abc", "abc" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (MyListView) findViewById(R.id.lv);
ArrayAdapter
aa = new ArrayAdapter
(this,
android.R.layout.simple_list_item_1, str);
lv.setAdapter(aa);
setListviewHeight(lv);
}
@SuppressWarnings({ "deprecation", "rawtypes" })
private void setListviewHeight(MyListView lv2) {
ArrayAdapter aa = (ArrayAdapter) lv2.getAdapter();
int total = 0;
for (int i = 0; i < aa.getCount(); i++) {
View item = aa.getView(i, null, lv2);
if (item != null) {
item.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
item.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);// 无束缚测量
total += item.getMeasuredHeight();
}
}
LayoutParams lp = lv2.getLayoutParams();
lp.height = total + (lv2.getDividerHeight() * (aa.getCount() - 1))
+ lv2.getPaddingTop() + lv2.getPaddingBottom();
int h = getWindowManager().getDefaultDisplay().getHeight();
if (lp.height > h / 2) {
lp.height = h / 2;
}
lv2.setLayoutParams(lp);
}
}
ScrollView嵌套ListView
最新推荐文章于 2022-03-30 00:31:40 发布