Android view layout_width - как изменить программно?

Это мое мнение, и я хочу изменить layout_width на "10dip". Как мне сделать это программно? Обратите внимание, что это не линейный макет, это вид.

<View android:id="@+id/nutrition_bar_filled" 
  android:background="@drawable/green_rectangle" 
  android:layout_height="30dip"
  android:layout_width="50dip">
</View>

Я знаю о LayoutParams. Как я могу использовать его, чтобы установить ширину 10dip?

5 ответов

Решение

Я полагаю, что ваш вопрос заключается в том, чтобы динамически изменять только ширину вида, в то время как вышеуказанные методы полностью изменят свойства макета на новые, поэтому я предлагаю сначала получить getLayoutParams из представления, затем установить ширину для layoutParmas и, наконец, установить layoutparams для представления, поэтому ниже шаги, чтобы сделать то же самое.

View view_instance = (View)findViewById(R.id.nutrition_bar_filled);
LayoutParams params=view_instance.getLayoutParams();
params.width=newOne;
view_instance.setLayoutParams(params);

Вы можете установить высоту и ширину, как это также:

viewinstance.setLayoutParams(new LayoutParams(width, height));

Или просто:

view.getLayoutParams().width = 400;
view.requestLayout();

Попробуйте использовать

View view_instance = (View)findViewById(R.id.nutrition_bar_filled);
view_instance.setWidth(10);

используйте Layoutparams, чтобы установить ширину и высоту, как показано ниже.

LayoutParams lp = new LayoutParams(10,LayoutParams.wrap_content);
View_instance.setLayoutParams(lp);

андроидкс ( core-ktx) содержит функцию расширения для обновления параметров макета, например:

      view.updateLayoutParams<ConstraintLayout.LayoutParams> {
    width = ConstraintLayout.LayoutParams.MATCH_PARENT
    // or wrap_content
    width = ConstraintLayout.LayoutParams.WRAP_CONTENT
    // or size measured in pixels
    width = 200 
}
Другие вопросы по тегам