Как программно установить вес для кнопки
Мне нужно реализовать Dialog для Android-приложения с помощью Java-кода, поэтому я не могу использовать XML.
У меня есть root LinearLayout
, где я реализую строку поиска диапазона, тогда у меня есть другой LinearLayout
под корневой компоновкой с горизонтальной ориентацией, где я хочу добавить две кнопки в одну строку. Поэтому мне нужно установить вес на 1 и ширину до FILL_PARENT
и высоту до WRAP_CONTENT
.
Как я могу это сделать с кодом Java?
Ответы
Ответ 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();
}