Вы не используете LinearLayout.LayoutParams для LinearLayout.LayoutParams. Это бессмысленно. Также неясно, если linearLayout
в вашем коде является переменной экземпляра ... В любом случае вы можете просто ссылаться на LayoutParams внутри представления, который простирается от некоторого типа представления, чтобы получить LayoutParams View. Например, если вы находитесь внутри класса, который простирается от RelativeLayout, то
LayoutParams params = new LayoutParams(200, LayoutParams.WRAP_CONTENT);
получает вас RelativeLayout.LayoutParams
. В противном случае вам нужно будет квалифицировать LayoutParams
, который вы ищете. Для того, чтобы получить/применить LinearLayout LayoutParams, вам просто нужно
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams();
EDIT
linearLayout.getLayoutParams()
возвращает layoutParams
, который вы указали при называется setLayoutParams
, поэтому сначала убедитесь, что вы сделаете это. Затем, как только вы это сделали, вам просто нужно отправить LayoutParams
, которые были возвращены в LayoutParams
, на который вы его установили. так
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) linearLayout.getLayoutParams()
Кроме того, зачем вам нужны эти параметры? Что вы хотите выполнить в конечном счете? Я спрашиваю, потому что может быть более простой способ сделать то, что вы пытаетесь сделать ...
Фактически ответ на ваш вопрос ДА, вам нужно отбросить LayoutParams из getLayoutParams, потому что это метод полученный из класса View, который возвращает суперкласс LayoutParams, который является ViewGroup.LayoutParams, который из-за полиморфизма может быть отброшен к типу, который вы знаете.
К сожалению, тип, возвращаемый методом linearLayout.getLayoutParams, не имеет ничего общего с классом макета, который содержит этот linearLayout. Что касается удобства, предоставление родительского класса «LayoutParams» бессмысленно - если мне это нужно, я мог бы наложить linearLayout на ViewsGroup и взять его getLayputParams и сделать их универсальными. Но Android дает мне * только * ViewsGroup.LayoutParams. – Gangnus
Потому что он неоднозначен, его нельзя возвращать определенный тип LayoutParams, хотя он не является общим типом. Система не может знать, какой тип. Ваш вопрос бессмыслен для меня. – lulumeya
Если linearLayout имеет класс LinearLayout, функция linearLayout.getLayoutParams - это класс LinearLayout и может легко вернуть класс LinearLayout.LayoutParams. Где ошибка? – Gangnus