3

我正在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分别处于相对布局和线性布局中。

我正在尝试更改按钮所在的线性布局的边距,以便我可以隐藏按钮。

4

1 回答 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);

旁注:您应该用((View)(View)v.getParent()).getParent())方法中的convertView参数替换getView

于 2013-07-24T13:46:05.833 回答