【问题标题】:Cant change linearlayout height in getView()无法在 getView() 中更改线性布局高度
【发布时间】:2018-12-13 05:24:35
【问题描述】:

fragment.xml 包含线性布局和一个相对布局内的按钮。我需要在单击按钮时调整线性布局的高度,但它不起作用(没有任何反应)。但是,设置 textview 的文本是有效的。有任何想法吗?我不确定这是否可能。

getView() 函数:

@Override
public View getView(int _position, View _view, ViewGroup _parent) {

View view = _view;

ViewHolder m_viewHolder ;

 if (view == null) {

    LayoutInflater inflater = (LayoutInflater) m_ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

     view = inflater.inflate(R.layout.fragment_user, _parent, false);

     m_viewHolder = new ViewHolder();

     m_viewHolder.btn_test = (ImageButton)view.findViewById(R.id.btn_details);

     m_viewHolder.btn_test.setOnClickListener(changeLLHeight);

     view.setTag(m_viewHolder);

} else {
     m_viewHolder = (ViewHolder) view.getTag();
}

m_viewHolder.btn_test.setTag(_position);


return view;
}

OnClickListener():

private View.OnClickListener changeLLHeight = new View.OnClickListener() {
  @Override
  public void onClick(View v) {

    RelativeLayout rl = (RelativeLayout)v.getParent();

    LinearLayout ll = (LinearLayout)rl.getChildAt(1);

    TextView tv = (TextView)rl.getChildAt(2);

    ll.getLayoutParams().height = 20;
    ll.requestLayout();

    tv.setText("Oi!!");

    Toast.makeText(getContext(), "", Toast.LENGTH_SHORT).show();


  }
};

【问题讨论】:

  • 你应该更新布局参数
  • “改为更新布局”是什么意思?

标签: java android mobile


【解决方案1】:

你可以用

LinearLayout ll = (LinearLayout)rl.getChildAt(1);
LayoutParams params = ll.getLayoutParams();

// Changes the height and width to the specified *pixels*
params.height = 100;
params.width = 100;
ll.setLayoutParams(params);

【讨论】:

    【解决方案2】:

    这是你需要的:

    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)
                                ll.getLayoutParams();
    params.height = 20;
    ll.setLayoutParams(params);
    

    【讨论】:

      【解决方案3】:

      您需要使用 setLayoutParams 应用参数

      Android: How to Programmatically set the size of a Layout

      LayoutParams params = ll.getLayoutParams();
      params.height = 20;
      ll.setLayoutParams(params);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-03
        • 2020-05-07
        • 1970-01-01
        • 1970-01-01
        • 2017-05-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多