Подтвердить что ты не робот

Как программно установить вес для кнопки

Мне нужно реализовать Dialog для Android-приложения с помощью Java-кода, поэтому я не могу использовать XML.

У меня есть root LinearLayout, где я реализую строку поиска диапазона, тогда у меня есть другой LinearLayout под корневой компоновкой с горизонтальной ориентацией, где я хочу добавить две кнопки в одну строку. Поэтому мне нужно установить вес на 1 и ширину до FILL_PARENT и высоту до WRAP_CONTENT.

Как я могу это сделать с кодом Java?

4b9b3361

Ответ 1

LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
p.weight = 1;

rangeSeekBar.setLayoutParams(p);

Я не уверен, какой вид вы хотите установить параметры макета. Я просто предположил, что rangeSeekbar показывает пример. Измените, если вам нужно.

При использовании параметров макета всегда используйте корневой тип параметра.

Ex. если у вас есть View, вы хотите применить параметры в пределах RelativeLayout использовать RelativeLayout.LayoutParams..

Ответ 2

Вы можете передать его как часть конструктора LinearLayout.LayoutParams: Вы имели в виду wrap_content?

LayoutParams param = new LinearLayout.LayoutParams(
                         LayoutParams.MATCH_PARENT,
                         LayoutParams.WRAP_CONTENT, 1.0f);

1.0f - вес

Ответ 3

Не использует ли XML требование? Если нет, вы всегда можете создать свой макет в XML, а затем использовать LayoutInflater во время выполнения, чтобы создать иерархию представления и передать ее в setView() в диалоговом окне.

Например:

LayoutInflater inflater = LayoutInflater.from(getActivity());
View v = inflater.inflate(R.layout.my_dialog_layout, null);

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(v);

Ответ 4

более простой способ:

public static void setLayoutWeight(View view , float weight)
{
    ((LinearLayout.LayoutParams) view.getLayoutParams()).weight = weight;
    view.requestLayout();
}