-
//重写onMeasure()的方法
-
@Override
-
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
-
super.onMeasure(widthMeasureSpec, expandSpec);
-
}
-
}
对于本类来说,还是很好理解的,下面请看XML中的布局
[html] view plain copy
- <?xml version\="1.0" encoding\="utf-8"?>
-
<ScrollView xmlns:android=“http://schemas.android.com/apk/res/android”
-
xmlns:tools=“http://schemas.android.com/tools”
-
xmlns:myapp=“http://schemas.android.com/apk/res-auto”
-
android:layout_width=“match_parent”
-
android:layout_height=“match_parent”
-
>
-
<com.example.acer_pc.listviewscrollview.MyListView
-
android:id="@+id/lview"
-
android:layout_width=“match_parent”
-
android:layout_height=“match_parent”
-
/>
[html] view plain copy
- </ScrollView>
记住listview是自定义的list view,一定要写对哦!
在Mainactivity中就很简单了,就是简单的查找控件,以及给listview控件设值。具体代码如下:
\[java\]
[view plain](
)
[copy](
)
-
package com.example.acer_pc.listviewscrollview;
-
import android.os.Bundle;
-
import android.support.v7.app.AppCompatActivity;
-
import android.view.View;
-
import android.view.ViewGroup;
-
import android.widget.Adapter;
-
import android.widget.ArrayAdapter;
-
import java.util.ArrayList;
-
public class MainActivity extends AppCompatActivity {
-
private ArrayList list = new ArrayList();
-
private MyListView listView;
-
private int height = 0;
-
@Override
-
protected void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_main);
-
listView = (MyListView) findViewById(R.id.lview);
-
for (int i = 0;i <= 50; i++){
-
list.add( “第” + i + “数据”);
-
}
-
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,list);
-
listView.setAdapter(adapter);
-
}
另外一种就是简单的计算listview控件的高度。【这种方法在eclipse中可以解决这个问题,但是在AS中没有效果,正在考虑why,欢迎各路大神提拔指点】XML中和上一种方法布局一样,只需将自定义的listview改为系统的list view控件就好了,然后在Activity中,首先查找控件listview,提供一个适配器给listview。然后对list view的高度进行计算,具体代码如下:
\[java\]
[view plain](
)
[copy](
)
1. package com.example.acer\_pc.listviewscrollview;
3. import android.os.Bundle;
4. import android.support.v7.app.AppCompatActivity;
5. import android.view.View;
6. import android.view.ViewGroup;
7. import android.widget.Adapter;
8. import android.widget.ArrayAdapter;
10. import java.util.ArrayList;
12. public class MainActivity extends AppCompatActivity {
13. private ArrayList<String> list = new ArrayList<String>();
14. private MyListView listView;
15. private int height = 0;
16. @Override
17. protected void onCreate(Bundle savedInstanceState) {
18. super.onCreate(savedInstanceState);
19. setContentView(R.layout.activity\_main);
20. listView = (MyListView) findViewById(R.id.lview);
21. for (int i = 0;i <= 50; i++){
22. list.add( "第" + i + "数据");
23. }
24. ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple\_list\_item\_1,list);
25. listView.setAdapter(adapter);
26. getListHeight(listView);
27. }
28. public void getListHeight(MyListView listview) {
29. Adapter adapter = listview.getAdapter();
30. for (int i = 0; i < adapter.getCount(); i++) {
31. View view = adapter.getView(i, null, listview);
32. view.measure(0,0);
33. height += view.getMeasuredHeight();
34. }
36. int dividerHeight = listview.getDividerHeight() \* (adapter.getCount() - 1);
## 文末
好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,可以来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。
> 这里放上一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套**进阶学习的视频及面试专题资料包**,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家~
> **[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://codechina.csdn.net/m0_60958482/android_p7)**
![](https://img-blog.csdnimg.cn/img_convert/0dcee4ff2298152561e743e0ae6bc9ca.png)
同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。
> 这里放上一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套**进阶学习的视频及面试专题资料包**,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家~
> **[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://codechina.csdn.net/m0_60958482/android_p7)**
[外链图片转存中...(img-ohT3uuRR-1630671831431)]