2015-08-15 6 views
0

Что я сделал, я добавил пучок TextViews программно, но теперь ScrollView не изменит размер, чтобы соответствовать всем новым TextViews, созданным в методе onCreate().ScrollView не окружает весь RelativeLayout

OnCreate():

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

    RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.relative_layout); 

    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    lp.addRule(RelativeLayout.ALIGN_LEFT); 

    for (int i = 1; i < 21; i++) { 
     TextView number = new TextView(this); 
     number.setText(Integer.toString(i)); 
     Log.i("i", Integer.toString(i)); 
     number.setLayoutParams(lp); 
     number.setY(i/2.54f * getResources().getDisplayMetrics().densityDpi); 
     relativeLayout.addView(number); 
    } 
} 

activity_main.xml:

<ScrollView 
android:id="@+id/scroll_view" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fillViewport="true"> 

<RelativeLayout 
    android:id="@+id/relative_layout" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    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"/> 
</ScrollView> 

Есть ли способ, чтобы сделать ScrollView приспосабливать все внутри RelativeLayout?

+0

Я думаю, что высота Вашего 'relativelayout' является' wrap_content', который будет использовать пространство, необходимое для общего пространства всех высота текста. сделайте это 'match_parent' и проверьте. – Shvet

+0

Пробовал и не менял – silverAndroid

+0

Можете ли вы показать изображение экрана? – Shvet

ответ

0

Попробуйте это,

<ScrollView 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/scroll_view" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
> 

<RelativeLayout 
    android:id="@+id/relative_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity"> 

</RelativeLayout> 
</ScrollView> 

Добавьте это в ваш код,

RelativeLayout rLayout = (RelativeLayout) findViewById(R.id.relative_layout); 
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, 
RelativeLayout.LayoutParams.WRAP_CONTENT); 
TextView tv1 = new Button(this); 
tv1.setText("Hello"); 
tv1.setLayoutParams(lp); 
tv1.setId(1); 
rLayout.addView(tv1); 


for(int i=1;i<25;i++) 
{ 
    RelativeLayout.LayoutParams newParams = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.WRAP_CONTENT, 
    RelativeLayout.LayoutParams.WRAP_CONTENT); 
    TextView tv = new Button(this); 
    tv.setText("Hello "+i+1); 
    newParams.addRule(RelativeLayout.BELOW, i); 
    tv.setLayoutParams(newParams); 
    tv.setId(2); 
    rLayout.addView(tv); 
} 
+0

не сработал. – silverAndroid

+0

Попробуйте добавить текст в свой RelativeLayout через XML, а не код. Если он прокручивается таким образом, то что-то не так с вашим кодом. –

+0

Я пробовал, и это сработало, поэтому я не уверен, что не так с моим кодом – silverAndroid

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