Отображение линейного макета программно в цикле - PullRequest
0 голосов
/ 23 октября 2018

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

ScrollView sv = new ScrollView(this);
    sv.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
    sv.setPadding(5, 5, 5, 5);
    sv.setBackgroundColor(getResources().getColor(R.color.colorWhite));
    LinearLayout ll = null;
    for (int i=0; i < 2; i++){
        try {

            //Here iam defining the LinearLayout
            ll = new LinearLayout(this);
            ll.setId(i);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
            ll.setLayoutParams(params);
            ll.setOrientation(LinearLayout.VERTICAL);
            ll.setBackground(getDrawable(R.drawable.circle_view));

            //Here iam defining the RelativeLayout
            RelativeLayout Rl = new RelativeLayout(this);
            RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            Rl.setLayoutParams(param);

            //Defining a layout params for widgets
            RelativeLayout.LayoutParams image = new RelativeLayout.LayoutParams(100, 90);
            image.addRule(RelativeLayout.ALIGN_LEFT);
            //Creating widgets
            ImageView im = new ImageView(this);
            im.setImageResource(R.mipmap.airtel);
            im.setId(R.id.image1);
            im.setLayoutParams(image);
            //----------------
            RelativeLayout.LayoutParams txtone = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            txtone.addRule(RelativeLayout.RIGHT_OF, R.id.image1);
            txtone.setMargins(0, 5, 0, 45);

            TextView txtVone = new TextView(this);
            txtVone.setText("ArkaL"+i);
            //txtVone.setTextSize(R.dimen.MainTextSize);
            txtVone.setTextSize(15);
            txtVone.setTypeface(txtVone.getTypeface(), Typeface.BOLD);
            txtVone.setLayoutParams(txtone);

            //------------------------------------------------
            RelativeLayout.LayoutParams txttwo = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            txttwo.addRule(RelativeLayout.RIGHT_OF, R.id.image1);
            txttwo.setMargins(0, 45, 0, 0);
            TextView txtVtwo = new TextView(this);
            txtVtwo.setText("République Démocratique du Congo");
            txtVtwo.setTypeface(txtVtwo.getTypeface(), Typeface.SERIF.getStyle());
            txtVtwo.setTextSize(10);
            txtVtwo.setLayoutParams(txttwo);

            Rl.addView(im);
            Rl.addView(txtVone);
            Rl.addView(txtVtwo);

            RelativeLayout.LayoutParams recycler = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            RecyclerView rv = new RecyclerView(this);
            rv.setLayoutParams(recycler);
            ll.addView(Rl);
            ll.addView(rv);

        }catch (Exception e){

        }

    }
    //Here for assigning Linear to ScrollView
    sv.addView(ll);
    this.setContentView(sv);

Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 23 октября 2018

ваша проблема в том, что вы создали один LinearLayout и изменили его в цикле, а затем добавили в ScrollView, так что в конце у вас будет только один LinearLayout.как вы, возможно, знаете, ScrollView должен иметь только один View как дочерний вид, поэтому вы должны добавить LinearLayout для ScrollView и добавить столько LinearLayout, сколько вы хотите, к основному LinearLayout.ваш код может выглядеть следующим образом:

LinearLayout llMain = new LinearLayout(this);
LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
llMain.setLayoutParams(params2);
llMain.setOrientation(LinearLayout.VERTICAL);
sv.addView(llMain);
LinearLayout ll = null;
for (int i = 0; i < 2; i++) {
 try {

  //Here iam defining the LinearLayout
  ll = new LinearLayout(this);
  ll.setId(i);
  LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
  ll.setLayoutParams(params);
  ll.setOrientation(LinearLayout.VERTICAL);
  ...
  llMain.addView(ll);
 } catch (Exception e) {
  ...

обратите внимание, что высота основного линейного слоя должна переносить его содержимое;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...