我正在使用自定义适配器显示ListView
。在视图中,我在布局中有一个textView
和一个按钮。
应该发生什么 - >只要我点击文本视图,onClick
的自定义适配器类中的TextView
回调就会设置button_layout的边距,如此
View button_layout = (((View)(View)v.getParent()).getParent()).findViewById(R.id.button_layout));
MarginLayoutParams margins=(MarginLayoutParams)button_layout.getLayoutParams();
margins.bottomMargin=-100;
但这没有发生。我能够改变背景颜色。但无法改变底部保证金。 customadapter
是较大代码的一部分,我无法透露。
应用程序没有崩溃,但也无法正常工作。如果我在调试器中看到布局的bottomMargin的值已经改变但它没有反映在UI中:(我已经在这里放了一些代码。假设已经设置了onClickListener。它正在工作,因为正如我所说我可以在单击文本视图时更改布局的背景颜色。
public class MyCustomAdapter extends ArrayAdapter<someClass> implements OnClickListener{
public View getView(int position, View convertView, ViewGroup parent) {
}
public void onClick(View v){
View row_to_hide = (((View ((View)v.getParent()).getParent()).findViewById(R.id.row_to_hide));`
MarginLayoutParams margins=(MarginLayoutParams)row_to_hide.getLayoutParams();`
margins.bottomMargin=-100;`
}
}
我是android的新手,想知道这种方法在概念上是否存在错误。此外,textView
和按钮分别位于相对布局和线性布局中。
我正在尝试更改按钮所在的线性布局的边距,以便我可以隐藏按钮。
答案 0 :(得分:1)
您更改了布局参数,但您必须将它们设置回来查看。因此,方法setLayoutParams
在那里缺失。代码shold看起来像这样:
View button_layout = (((View)(View)v.getParent()).getParent()).findViewById(R.id.button_layout));
MarginLayoutParams margins=(MarginLayoutParams)button_layout.getLayoutParams();
margins.bottomMargin=-100;
button_layout.setLayoutParams(margins);
旁注:您应该使用((View)(View)v.getParent()).getParent())
方法中的convertView
参数替换getView
。