2014-01-14 2 views
1

Я пытаюсь создать horizontalscrollview в методе onCreate() моего первого действия, так как я хочу сделать большое количество текстовых просмотров для прокрутки. Вот что у меня есть до сих пор:Программно создавая horizontalscrollview не работает

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.ViewGroup.LayoutParams; 
import android.widget.HorizontalScrollView; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    LinearLayout linscrollview; 
    HorizontalScrollView scrollview; 

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

     scrollview = (HorizontalScrollView) findViewById(R.id.scrollview_layout); 
     linscrollview = new LinearLayout(this); 


     for(int i=0; i<5; i++) { 
      TextView tv = new TextView(this); 
      tv.setWidth(LayoutParams.WRAP_CONTENT); 
      tv.setHeight(LayoutParams.WRAP_CONTENT); 
      tv.setText("" + i); 
      tv.setTextSize(20); 
      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
      params.setMargins(10, 0, 10, 0); 
      tv.setLayoutParams(params); 
      tv.setId(i); 
      linscrollview.addView(tv); 
     } 


     scrollview.addView(linscrollview); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

У меня нет никаких ошибок, однако текстовых просмотров не появляется.

ответ

2

Ваша проблема, вероятно, связана с методами setWidth и setHeight. Они устанавливают точное значение ширины и высоты TextView в пикселях, как описано в документации:

Делает TextView ровно таким, чтобы он был шириной в несколько пикселей. Вы можете сделать то же самое, указав это число в LayoutParams.

http://developer.android.com/reference/android/widget/TextView.html#setWidth(int)

То, что вы хотите сделать, это установить LayoutParams для TextView, как вы уже идут немного дальше вниз ваш код. Поэтому просто избавитесь от этих двух вызовов метода, и он должен работать.

+0

@ThelT, который исправил его! Благодаря! – epsilondelta

+0

Без проблем, удачи в вашем проекте! :) – TheIT

0

Пожалуйста, как этот

linscrollview .setOrientation(LinearLayout.HORIZONTAL); 

и ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(FILL_PARENT, WRAP_CONTENT);

0

Мои кодирования здесь. он будет дает вам список как horizonatal ListView

String[] name={"PRASHANT","PRASHANT","PRASHANT","PRASHANT","PRASHANT","PRASHANT","PRASHANT"} ; 

myLInearLayoutmain =(LinearLayout) findViewById(R.id.linearLayoutmain); 



for(int i =0;i<6;i++) 
{ 
    LinearLayout li=new LinearLayout(getApplicationContext()); 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
    li.setOrientation(LinearLayout.VERTICAL); 
    LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 

    LinearLayout.LayoutParams paramsnew = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); 


    params1.setMargins(30, 20, 30, 0); 
    //add textView 
    valueTV = new TextView(this); 
    valueTV.setText(""+name[i]); 
    valueTV.setId(5); 
    valueTV.setLayoutParams(paramsnew); 
    valueTV.setGravity(Gravity.CENTER); 

    // adding Button to linear 
    valueB = new Button(this); 
    valueB.setText(""+name[i]); 
    valueB.setId(i); 
    valueB.setLayoutParams(params); 
    valueB.setOnClickListener(this); 
    valueB.setGravity(Gravity.CENTER); 


    //add the textView and the Button to LinearLayout 
    li.addView(valueTV); 
    li.addView(valueB); 
    li.addView(img); 

    li.setLayoutParams(params1); 
    myLInearLayoutmain.addView(li); 
} 
1

это S кусок кода для выполнения горизонтальной прокрутки для TextView, изменить то же самое в соответствии с требованиями.

    textView.setHorizontallyScrolling(true); 
        textView.setSingleLine(true); 
        textView.setMovementMethod(new ScrollingMovementMethod()); 
        textView.setHorizontalScrollBarEnabled(true); 
        textView.setSelected(true); 
Смежные вопросы