Установите вес LinearLayout в коде, а не в проблеме xml

У меня есть следующий код, чтобы попытаться установить вес linearLayout равным 0,7, после просмотра документации и некоторых примеров в Интернете он говорит, что он принимает 3 параметра, но в моем коде это не позволит мне:

LinearLayout linear = new LinearLayout(this); 
linear.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

Итак, здесь он устанавливает и высоту, и ширину, но последний параметр, указанный в документации, — это вес, и он не позволяет мне указать его там.


person SamRowley    schedule 10.01.2011    source источник


Ответы (3)


Попробуйте это для параметров макета для linearlayout:

linear.setLayoutParams(
        new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,   
                                      LayoutParams.WRAP_CONTENT,
                                      1)
);

Как доказательство концепции: это работает. проверьте импорт и сравните их со своими :)

файл: Test.java

package com.huiges.stackOverFlow.examples

import android.app.Activity;
import android.os.Bundle;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;

public class Test extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);  
        LinearLayout linear = new LinearLayout(this); 
        linear.setLayoutParams(
                new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,   
                                              LayoutParams.WRAP_CONTENT,
                                              1)
        );


    }

}
person Nanne    schedule 10.01.2011
comment
Я уже пробовал это, вот что я имею в виду, не принимая 3 параметра. eclipse просто хочет, чтобы я удалил 1. Вот почему это меня смущает. - person SamRowley; 10.01.2011
comment
Вы уверены, что используете правильные пакеты? Проверьте свой импорт, если необходимо. Я понял, что вы имеете в виду, но этот код нормально анализируется в моем затмении. Я добавлю полный класс, если хотите? - person Nanne; 10.01.2011
comment
импортировать android.view.ViewGroup.LayoutParams; Это единственный импорт, который у меня есть, связанный с LayoutParams, я думаю, этого достаточно, и, очевидно, у меня есть пакет LinearLayout. - person SamRowley; 10.01.2011
comment
Большое спасибо за вашу помощь, я не уверен, что проблема была в этом, но я написал этот код в методе ниже по классу, поскольку LinearLayout является глобальной переменной, и она тоже работала так, как я хотел. - person SamRowley; 10.01.2011

Используйте 1_

LinearLayout linear = new LinearLayout(this); 
linear.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT,1));
person Labeeb Panampullan    schedule 10.01.2011

Последний параметр принимает число с плавающей запятой. 0.7 является двойным, вместо этого используйте 0.7f, чтобы получить число с плавающей запятой.

linear.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                                        LayoutParams.WRAP_CONTENT, 
                                        0.7f));
person Olle    schedule 10.01.2011
comment
Проблема @samRowley заключалась в том, что были приняты только 2 параметра, поэтому я полагаю, что это не поможет. - person Nanne; 10.01.2011
comment
Из вопроса я прочитал, что он хочет создать LayoutParams с тремя параметрами, один из которых (вес) имеет значение 0,7, но не смог. Это именно то, что происходит, если вы забываете букву «f» и число интерпретируется как двойное. Если он использует 0.7f, код работает. Кажется полезным для меня :) - person Olle; 10.01.2011