2013-12-02 2 views
0

Я пытаюсь получить произвольное количество кнопок, созданных на экране, а затем есть способ прокрутки кнопок. (вверх/вниз)Как сделать кнопки прокрутки в Android, программно?

С небольшим количеством исследований я обнаружил, что должен использовать «scrollview» для того, что я делаю. Таким образом, я поставил его, как это .. (полный код на http://pastebin.com/05mtszi7)

LinearLayout layout = new LinearLayout(this); 
layout.setOrientation(LinearLayout.VERTICAL); 

LinearLayout row = new LinearLayout(this); 
row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 

Button btnTag = new Button(this); 
btnTag.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,  LayoutParams.WRAP_CONTENT)); 

row.addView(btnTag); 

ScrollView sc = new ScrollView(this); 
sc.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 
sc.setFillViewport(true); 
sc.addView(row); 

layout.addView(sc); 

Вы знаете, что я делаю неправильно? Я знаю, это что-то невероятно просто/глупо. Я посмотрел на все, но я действительно должен упускать из виду что-то важное. Все работает нормально, но ничего не прокручивается.

Заранее благодарим за помощь.

+0

, что ваша проблема, вы должны уточнить ... –

+0

@HarshitRathi Nothing свитки. Это в основном статично. – Coty

ответ

0

Используйте этот код. это поможет вам ...

LinearLayout layout = new LinearLayout(this); 
     layout.setOrientation(LinearLayout.VERTICAL); 

     TextView menuText = new TextView(this); 
     menuText.setText("People"); 
     menuText.setId(100); 
     menuText.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
     layout.addView(menuText); 

     for (int i = 0; i < 10; i++) { 

      LinearLayout row = new LinearLayout(this); 
      row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 


       Button btnTag = new Button(this); 
       btnTag.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 
       btnTag.setText(" " + i); 
       btnTag.setId(1 + (i)); 
       row.addView(btnTag); 

       btnTag.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
         String buttonText = "Unknown Person"; 
          Button b = (Button) findViewById(v.getId()); 
          buttonText = (String) b.getText(); 

         TextView tx = (TextView) findViewById(100); 
         tx.setText(buttonText + " pressed."); 
        } 
       }); 


      ScrollView sc = new ScrollView(this); 
      sc.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 
      sc.setFillViewport(true); 

      sc.addView(row); 

      layout.addView(sc); 

      setContentView(layout); 
+0

Спасибо, пример zohreh показал мне, что я делаю неправильно, я просто добавил setContentView (макет); в конце концов и получил то, что вы отправили, я думаю. Мой последний код здесь. http://pastebin.com/gRqGhJLn - Спасибо всем, кто помог! – Coty

0

вы должны добавить кнопки в макет, а макет добавить в scrollview.scrollview только может иметь ребенка.

  LinearLayout layout = new LinearLayout(this); 
layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT)); 
       layout.setOrientation(LinearLayout.VERTICAL); 

       TextView menuText = new TextView(this); 
       menuText.setText("People"); 
       menuText.setId(100); 
       menuText.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
       layout.addView(menuText); 

       for (int i = 0; i < users_registered; i++) { 

        LinearLayout row = new LinearLayout(this); 
        row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 


         Button btnTag = new Button(this); 
         btnTag.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 
         btnTag.setText(user_name[i] + " " + i); 
         btnTag.setId(1 + (i)); 
         row.addView(btnTag); 

         btnTag.setOnClickListener(new View.OnClickListener() { 
          public void onClick(View v) { 
           String buttonText = "Unknown Person"; 
            Button b = (Button) findViewById(v.getId()); 
            buttonText = (String) b.getText(); 

           TextView tx = (TextView) findViewById(100); 
           tx.setText(buttonText + " pressed."); 
          } 
         }); 
    layout.addView(row); 
     }//end loop 

        ScrollView sc = new ScrollView(this); 
        sc.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 
        sc.setFillViewport(true); 

        sc.addView(layout); 

        // layout.addView(sc); 
+0

Разве это не то, что я делаю? – Coty

+0

Я отредактировал ваш код.please обратите внимание на конец цикла – zohreh

+0

edit: Nevermind, я вижу, что вы делали. Я исправил свою проблему. Спасибо огромное! – Coty

0

Попробуйте этот код:

ScrollView sc = new ScrollView(this); 
    sc.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
    sc.setFillViewport(true); 

    LinearLayout layout = new LinearLayout(this); 
    layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 
    layout.setOrientation(LinearLayout.VERTICAL); 

    LinearLayout row = new LinearLayout(this); 
    row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 

    Button btnTag = new Button(this); 
    btnTag.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT)); 

    row.addView(btnTag); 

    layout.addView(row); 
    sc.addView(layout); 

Это поможет ...

+0

Я пытался сделать это, как вы сказали, но программа вылетает после ее запуска. Любая идея о том, почему? – Coty

Смежные вопросы