首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在listview中调整另一列witdh的大小,当某些列可见/不可见时

在listview中调整另一列witdh的大小,当某些列可见/不可见时
EN

Stack Overflow用户
提问于 2014-09-15 08:50:46
回答 1查看 244关注 0票数 0

我想显示一个有几个列的表,但它不适合手机。因此,我打算使用一个ListView,它的项由不同的文本视图组成,每个文本视图代表一个列。在add中,我将切换按钮放在listview上方,以使所选列可见或不可见。而且效果很好。

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

在这里,我的适配器的getView (我不把所有的列,它只是为这个例子)

代码语言:javascript
复制
 @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;
}

listview项的xml文件是由几个文本视图组成的。

如果您想要(但这并不是最重要的),toglleClicked方法:

代码语言:javascript
复制
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();
    }

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-15 08:56:37

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

根据医生的说法:

View.GONE这个视图是不可见的,它不占用任何空间来进行布局。

View.INVISIBLE这个视图是不可见的,但是它仍然占用布局的空间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25844119

复制
相关文章

相似问题

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