ListView
のレイアウトを、垂直方向にLinearLayout
に動的に追加しています。しかし、アプリケーションが実行されると、すべてのデータが画面上でまとめられます。スクロールしようとすると、ListView
がスクロール可能であることがわかります。をスクロールできる代わりに、ListView
ごとに一度に1行しか表示されません。ここで 動的に追加されたListViewがLinearLayoutに正しく表示されないのはなぜですか?
MainActivity.java
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
<ScrollView>
<LinearLayout android:id="@+id/main_layout" android:orientation="vertical">
</LinearLayout>
</ScrollView>
しかし、私は内にListView.LayoutParams.WRAP_CONTENT
を変更した場合teger、500
と言うと、すべてがうまくレイアウトされているように見えます。
だから、何ができますか?あなたのListViewの
リストビューの幅**は** MATCH_PARENTに設定されています。さらに、「ビューをスクロールするために高さと幅を設定する必要があります」とはどういう意味ですか? – Brian
なぜリストビューを動的に追加し、レイアウトに設定しないのか説明できますか?メインレイアウトにlistViewを追加してそれにアダプタを設定すると、正常に動作すると思います –
センサータイプごとに 'ListView'を追加しています。アプリが実行される前に(各デバイスが異なるために)センサの数を知ることができないので、それらを動的に追加する必要があります。 – Brian