2014-01-30 3 views
0

Я пытаюсь программно добавить целую кучу textViews определенной ширины и в определенном месте на вкладку. Теперь их setX() может быть помещен за пределы разрешения экрана. Например, моя вкладка имеет ширину 1240 пикселей, и я хочу разместить TextView с разрешением 2000 пикселей и, конечно, иметь функцию горизонтальной прокрутки. Я в основном создаю временную шкалу на лету в зависимости от данных.Как добавить текстовые изображения в horizontalScrollView программно?

Я просто пытаюсь (на данный момент) получить несколько TextViews, брошенных на экран, и иметь горизонтальный вид прокрутки для них. Я не уверен, что даже делает setX (2000); заполнит TextView за пределами экрана. Как я могу заставить HorizontalScrollView работать, чтобы я мог поместить мой основной макет вправо, чтобы увидеть оставшиеся два TextViews, которые были созданы?

Некоторые базовый код:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/relative_layout" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" 
android:orientation="horizontal"> 

<HorizontalScrollView 
    android:id="@+id/horizontal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 
</HorizontalScrollView> 

</RelativeLayout> 

MainActivity:

public class MainActivity extends Activity { 

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

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.relative_layout); 
    for(int i = 50; i < 550; i+=100){ 
     TextView myText = new TextView(this); 
     myText.setX(i * 3); 
     myText.setText("HELLLLLOOOO"); 
     layout.addView(myText); 
    } 
} 

@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; 
} 
} 
+0

Выключает setX() внутри линейного макета, вызывает чрезвычайно случайное поведение. Внутри относительной компоновки я могу перемещаться в нужное положение, но горизонтальный скроллер отключается – Elliott

ответ

2

MainActivity

public class MainActivity extends Activity { 

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

     LinearLayout sv = (LinearLayout)findViewById(R.id.ll); 
      for(int i = 50; i < 550; i+=50){ 
       TextView myText = new TextView(this); 
       myText.setX(i * 3); 
       myText.setText("HELLLLLOOOO"); 
       sv.addView(myText); 
      } 
      } 

    @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; 
    } 

} 

XML

<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 


    <LinearLayout 
     android:id="@+id/ll"   
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    </LinearLayout> 
</HorizontalScrollView> 
+0

Я тоже пробовал это, но, к сожалению, функция прокрутки больше не активна. Использует ли я приложение setX() для этого? – Elliott

+0

Ну, добавляя строки myText.setWidth (120); делает работу прокрутки, а myText.setWidth (80) - нет. – Elliott

+0

Прокрутка работает, но может быть, вы не получаете достаточно TextView для прокрутки на экране устройства. for (int i = 50; i <550; i ++) Используйте это. И проверьте только, чтобы отлаживать. –

0

Создайте один пользовательский вид, например

public class Example extends HorizontalScrollView { 

} 

Execute все нереализованные методы, а затем написать это:

LinearLayout l = new LinearLayout(context); 

TextView tv = new TextView(context); 

tv.setText("Example"); 

tv.setTextColor(Color.RED); 

l.addView(tv); 

addView(l); 

Теперь в вашем XML, поставить имя имя_пакета и класс, как это:

<com.argha.Example android:height and all /> 

Выполнено, теперь у вас есть представление HorizontalScroll с помощью TextView ... больше текста, который вы хотите, просто выполните то же самое, что и выше.

Извините, если вы обнаружили ошибку кода, потому что я набрал свой телефон.

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