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

Добавление программы LinearLayout программно в Android не работает

Иерархия выглядит следующим образом:

  • RelativeLayout
    • LinearLayout (вертикальный)
      • FrameLayout (вес 5)
        • ImageView
      • Вид (вес 1)

Вид - это просто фиктивный вид для задания расстояния. Я сделал это в макете xml, и он работает. Но когда я хочу сделать это программно, следующие коды не работают.

LinearLayout LL = new LinearLayout(this);
ImageView ladder = new ImageView(this);
FrameLayout ladderFL = new FrameLayout(this);
View dummyView = new View(this);
ladder.setImageResource(R.drawable.ladder1);
LL.setOrientation(LinearLayout.VERTICAL);
LayoutParams LLParams = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
LinearLayout.LayoutParams ladderFLParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 0);
ladderFLParams.weight = 5f;
LinearLayout.LayoutParams dummyParams = new LinearLayout.LayoutParams(0,0);
dummyParams.weight = 1f;

FrameLayout.LayoutParams ladderParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM);
ladder.setLayoutParams(ladderParams);
ladderFL.setLayoutParams(ladderFLParams);
dummyView.setLayoutParams(dummyParams);
LL.setWeightSum(6f);
LL.setLayoutParams(LLParams);

ladderFL.addView(ladder);
LL.addView(ladderFL);
LL.addView(dummyView);
((RelativeLayout) findViewById(R.id.screenRL)).addView(LL);
4b9b3361

Ответ 1

LinearLayout LL = new LinearLayout(this);
    LL.setBackgroundColor(Color.CYAN);
    LL.setOrientation(LinearLayout.VERTICAL);

    LayoutParams LLParams = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);

    LL.setWeightSum(6f);
    LL.setLayoutParams(LLParams);


    ImageView ladder = new ImageView(this);
    ladder.setImageResource(R.drawable.ic_launcher);

    FrameLayout.LayoutParams ladderParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM);
    ladder.setLayoutParams(ladderParams);

    FrameLayout ladderFL = new FrameLayout(this);
    LinearLayout.LayoutParams ladderFLParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 0);
    ladderFLParams.weight = 5f;
    ladderFL.setLayoutParams(ladderFLParams);       
    ladderFL.setBackgroundColor(Color.GREEN);
    View dummyView = new View(this);

    LinearLayout.LayoutParams dummyParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,0);
    dummyParams.weight = 1f;
    dummyView.setLayoutParams(dummyParams);
    dummyView.setBackgroundColor(Color.RED);



    ladderFL.addView(ladder);
    LL.addView(ladderFL);
    LL.addView(dummyView);
    RelativeLayout rl=((RelativeLayout) findViewById(R.id.screenRL));
    rl.addView(LL);

Я только что разработал ваш код для лучшего понимания, а также дал ему цвет фона, чтобы получить четкое изображение, поскольку я не знаю, чего вы хотите, вы можете пройти через него. Надеюсь, это полезно. Вы должны предоставить свой рабочий xml, чтобы мы точно знали, что вы хотите.