Android устанавливает высоту и ширину пользовательского вида программно - PullRequest
113 голосов
/ 18 февраля 2011

Я создал пользовательское представление с именем Graphview.Вот структура для класса GraphView.

public class GraphView extends View {

    public GraphView(Context context, float[] values, String title, String[] horlabels, String[] verlabels, boolean type) {
        super(context);
                ........
   }

   ..................
   .................
}

Я добавил представление в таблицу с помощью addview().Работает нормально.Теперь я хочу установить высоту и ширину для GraphView.Как это сделать?

Ответы [ 5 ]

206 голосов
/ 18 февраля 2011

Вы можете установить высоту и ширину следующим образом:

myGraphView.setLayoutParams(new LayoutParams(width, height));
123 голосов
/ 18 февраля 2011

Простой способ - установить программный размер следующим образом:

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

Это хорошо, если вы знаете точный размер изображения. Однако, если вам нужен более гибкий подход, вы можете переопределить метод onMeasure() для более точного измерения вида в зависимости от доступного пространства и ограничений макета (wrap_content, match_parent или фиксированного размера).

Вы можете найти пример того, как переопределить onMeasure(), посмотрев android docs и образец LabelView в вашем каталоге SDK.

66 голосов
/ 12 июня 2013

Вы можете установить высоту и ширину вида в относительной компоновке, как это

ViewGroup.LayoutParams params = view.getLayoutParams();
params.height = 130;
view.setLayoutParams(params);
4 голосов
/ 21 мая 2014
spin12.setLayoutParams(new LinearLayout.LayoutParams(200, 120));

spin12 - ваш счетчик, а 200 , 120 - width и height для вашего spinner.

1 голос
/ 17 августа 2018

Это версия на основе Kotlin, при условии, что родительское представление является экземпляром LinearLayout.

someView.layoutParams = LinearLayout.LayoutParams(100, 200)

Позволяет установить ширину и высоту (100 и 200) в одной строке.

...