更改自定义适配器中的边距在onClick回调中不起作用,安卓。

3
我正在使用自定义适配器显示一个ListView。在视图中,我有一个textView和一个按钮在布局中。
预期的操作是,当我点击TextView时,自定义适配器类中的onClick回调将设置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 已设置。它正在工作,因为我可以在单击 TextView 时更改布局的背景颜色。
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;`
                                        }
   }

我是新手,想知道这种方法的概念上是否存在问题。此外,textView和按钮分别位于相对布局和线性布局中。

我试图改变包含按钮的线性布局的边距,以便隐藏按钮。

1个回答

1

您更改了布局参数,但必须将其设置回视图。因此,该方法setLayoutParams在此处缺失。代码应如下所示:

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);

顺便提一下: 你应该使用 getView 方法的 convertView 参数来替换 ((View)(View)v.getParent()).getParent())


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接