首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的动态添加的ListViews没有正确地显示到LinearLayout中?

为什么我的动态添加的ListViews没有正确地显示到LinearLayout中?
EN

Stack Overflow用户
提问于 2017-05-10 15:19:42
回答 3查看 31关注 0票数 0

我正在动态地将ListView布局添加到垂直方向的LinearLayout中。然而,当应用程序运行时,所有的数据都在屏幕上压缩在一起。如果我尝试滚动,我发现每个独立的ListView都是可滚动的,并且我每次只看到一行,而不是我的附件中的LinearLayout是可滚动的。

以下是我所拥有的:

MainActivity.java

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(){
        super.onCreate();
        setContentView();

        printSensors();
    }

    private void printSensors(){
        SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        ListView.LayoutParams layoutParams = new ListView.LayoutParams(ListView.LayoutParams.MATCH_PARENT, ListView.LayoutParams.WRAP_CONTENT);

        LinearLayout mainLayout = (LinearLayout)findViewById(R.id.main_layout);
        List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);

        for(Sensor sensor : sensorList){
            ListView listView = new ListView(this);
            listView.setId(View.generateViewId());
            listView.setLayoutParams(layoutParams);

            String[] sensorArray = sensor.toString().substring(1, sensor.toString().length()-1).split(",");
            ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, sensorArray);

            listView.setAdapter(arrayAdapter);
            mainLayout.addView(listView);
        }
    }
}

activity_main.xml

代码语言:javascript
复制
<ScrollView>
    <LinearLayout android:id="@+id/main_layout" android:orientation="vertical">
    </LinearLayout>
</ScrollView>

但是,如果我将ListView.LayoutParams.WRAP_CONTENT更改为整数,比如500,那么一切都布置得很好,看起来也不错。

那么,是什么原因呢?

EN

回答 3

Stack Overflow用户

发布于 2017-05-10 15:23:04

更改listView的宽度以匹配父内容而不是包装内容,还必须设置高度和宽度以滚动视图。

票数 0
EN

Stack Overflow用户

发布于 2017-05-10 15:53:33

代码语言:javascript
复制
private void printSensors(){
    list = (ListView) findViewById(R.id.list);
    ArrayList<String> sensorArray = new ArrayList<>();
    SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);
    for(Sensor sensor : sensorList){
        sensorArray.add(sensor.toString().substring(1, sensor.toString().length()-1).split(",").toString());
    }
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, sensorArray);
    list.setAdapter(arrayAdapter);
}
票数 0
EN

Stack Overflow用户

发布于 2017-05-10 17:55:08

将LinearLayout包装在另一个LinearLayout中,如下所示:

代码语言:javascript
复制
<ScrollView>
  <LinearLayout android:orientation="vertical">
    <LinearLayout  android:id="@+id/main_layout"
     android:orientation="vertical">
    </LinearLayout>
  </LinearLayout>
</ScrollView>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43896658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档