Не могу изменить высоту линейного размещения в getView () - PullRequest
0 голосов
/ 04 июля 2018

Фрагмент.xml содержит linearlayout и кнопку внутри RelativeLayout. Мне нужно изменить высоту линейного макета при нажатии кнопки, но это не работает (ничего не происходит). Тем не менее, настройка текста 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();


  }
};

Ответы [ 3 ]

0 голосов
/ 04 июля 2018

Вот что вам нужно:

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)
                            ll.getLayoutParams();
params.height = 20;
ll.setLayoutParams(params);
0 голосов
/ 04 июля 2018

Вам необходимо применить параметр с setLayoutParams

Android: Как программно установить размер макета

LayoutParams params = ll.getLayoutParams();
params.height = 20;
ll.setLayoutParams(params);
0 голосов
/ 04 июля 2018

U можно использовать

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...