Android 当某些列可见/不可见时,调整listview中其他列的大小

Android 当某些列可见/不可见时,调整listview中其他列的大小,android,listview,resize,adapter,Android,Listview,Resize,Adapter,我想显示一个有几列的表格,但它不适合手机。因此,我决定使用一个ListView,它的项由不同的textview组成,每个textview代表一个列。在add中,我将togglebuttons放在listview上方,以使所选列可见或不可见。而且效果很好 但是,当我隐藏一列时,它仍然是一个空白,其他可见列本身不使用这个新空间。那么,如何更改它以使可见列能够自行调整大小呢 这里是适配器的getView,我没有列出所有的列,只是举个例子 @Override public View getView(i

我想显示一个有几列的表格,但它不适合手机。因此,我决定使用一个ListView,它的项由不同的textview组成,每个textview代表一个列。在add中,我将togglebuttons放在listview上方,以使所选列可见或不可见。而且效果很好

但是,当我隐藏一列时,它仍然是一个空白,其他可见列本身不使用这个新空间。那么,如何更改它以使可见列能够自行调整大小呢

这里是适配器的getView,我没有列出所有的列,只是举个例子

 @Override
public View getView(int position, View convertView, ViewGroup parent) {

if (convertView == null) {

    convertView = LayoutInflater.from(context).inflate(
        R.layout.solvent_item, parent, false);
}

TextView name = ViewHolder.get(convertView, R.id.name);
TextView elution = ViewHolder.get(convertView, R.id.elution);
TextView viscosity = ViewHolder.get(convertView, R.id.viscosity);
TextView refraction = ViewHolder.get(convertView, R.id.refraction);

HashMap<String, String> item = getItem(position);
name.setText(item.get(NAME));
elution.setText(item.get(ELUTION));
viscosity.setText(item.get(VISCOSITY));
refraction.setText(item.get(REFRACTION));


if (SolventActivity.elutionChecked) {
    elution.setVisibility(View.VISIBLE);
} else {
    elution.setVisibility(View.INVISIBLE);

}

if (SolventActivity.viscosityChecked) {//if the toglebutton is on
    viscosity.setVisibility(View.VISIBLE);
} else {
    viscosity.setVisibility(View.INVISIBLE);

}

if (SolventActivity.refractionChecked) {
    refraction.setVisibility(View.VISIBLE);
} else {
    refraction.setVisibility(View.INVISIBLE);

}

return convertView;
}

非常感谢

将视图的可见性设置为view.GONE,而不是view.INVISIBLE

根据文件:

View.GONE此视图不可见,并且不占用任何空间用于布局

View.INVISIBLE此视图不可见,但它仍会占用布局空间。

尝试使用View.GONE而不是View.INVISIBLE。
public void onToggleClicked(View view) {
// Is the toggle on?
boolean on = ((ToggleButton) view).isChecked();

if (on) {

    switch ((String) ((ToggleButton) view).getTextOn()) {
    case "Elution":
    elutionChecked = true;
    adapter.notifyDataSetChanged();
    break;
    case "Viscosity":
    viscosityChecked = true;
    adapter.notifyDataSetChanged();
    break;
    case "Refraction":
    refractionChecked = true;
    adapter.notifyDataSetChanged();
    }

} else {
    switch ((String) ((ToggleButton) view).getTextOn()) {
    case "Elution":
    elutionChecked = false;
    adapter.notifyDataSetChanged();
    break;
    case "Viscosity":
    viscosityChecked = false;
    adapter.notifyDataSetChanged();
    break;
    case "Refraction":
    refractionChecked = false;
    adapter.notifyDataSetChanged();
    }