2015-05-01 3 views
0

Я проверял, как использовать кнопки для создания текстового вида.Android Studio Button Generate Textview

в файле Java они использовали:

public class SampleActivity extends Activity { 

    int counter = 0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_sample); 

     final LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linear_layout); 

     Button button = (Button) findViewById(R.id.add_button); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       counter++; 

       TextView textView = new TextView(SampleActivity.this); 
       textView.setText("TextView " + counter); 

       linearLayout.addView(textView); 
      } 
     }); 
    } 
} 

и активности макета они использовали

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/linear_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <Button 
     android:id="@+id/add_button" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Add TextView" /> 

</LinearLayout> 

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

Я понимаю код, они использовали счетчик для создания TextView за каждый раз (например, текстовое представление 1, затем текст 2). Но когда я нажимаю на кнопку, это на самом деле ничего не сделает.

Может кто-нибудь помочь? Был бы признателен за это :)

+0

Это может быть там, но вы не можете увидеть его. Просто спрашивайте - какой у вас был фон? Черный цвет? Черный текст на черном фоне не мог быть видимым :) – slanecek

+0

его просто фон переднего плана – user3622142

ответ

0

Ваш TextView муза есть layoutParams, согласно layout_width и layout_height

образец:

textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.WRAP_CONTENT, LinearLayout.WRAP_CONTENT)); 
+0

Что это значит? – user3622142

+0

Ваше текстовое изображение должно быть ** 0px height ** и ** 0px width **, если вы не задаете параметры макета. Когда вы используете xml-макет, вы можете использовать 'android: layout_width =" wrap_content "и' android: layout_height = "wrap_content" '. Вы должны сделать то же самое с представлениями java, поэтому используйте 'textView.setLayoutParams (новые LinearLayout.LayoutParams (LinearLayout.WRAP_CONTENT, LinearLayout.WRAP_CONTENT)); ' –

+0

Это неверно, в ViewGroups есть' generateDefaultLayoutParams() 'для случая, когда параметры не заданы. – tachyonflux

0

попробовать добавить implements View.OnClickListener в своем определении активности. Я имею в виду public class SampleActivity extends Activity implements View.OnCLickListener{ Цельное учебник: https://anujarosha.wordpress.com/2011/11/13/how-to-implements-onclicklistener-for-a-view-item-in-android/

Ваш код должен выглядеть так:

public class SampleActivity extends Activity implements View.OnClickListener { 

    private int counter = 0; 

    private final LinearLayout linearLayout; 
    private Button button; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_sample); 

     linearLayout = (LinearLayout) findViewById(R.id.linear_layout); 

     button = (Button) findViewById(R.id.add_button); 
     button.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View view) { 
     if(view.getId() == button.getId()){ 
      counter++; 
      TextView textView = new TextView(SampleActivity.this); 
      textView.setText("TextView " + counter); 

      linearLayout.addView(textView); 
     }   
    } 
} 
+0

Я получаю сообщение об ошибке. Он говорит, что не может назначить значение linearlayout, но я получил его на работу, если я изменил его на не окончательный. Я также получил ошибку на (это) – user3622142

+0

Я получил его на работу, но он не делает новый текст – user3622142

+0

, на котором 'this' вы получаете сообщение об ошибке? и какой цвет ваш фон? возможно, текст имеет тот же цвет? –

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