2013-07-04 4 views
2

У меня есть фрагмент с двумя RelativeLayout, один внутри другого. Этот фрагмент находится внутри вкладки. Я хочу, чтобы внутренний макет (layoutInternal) прокручивался, но со следующим кодом не работает. Я создаю объект вида в layoutInternal динамически. Где моя ошибка?Android ScrollView с RelativeLayout

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layoutExsternal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:fillViewport="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginBottom="@dimen/fragmentHall_10dp_margin" 
     android:layout_marginTop="@dimen/fragmentHall_10dp_margin"> 

     <RelativeLayout 
      android:id="@+id/layoutInternal" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"> 

     </RelativeLayout> 

    </ScrollView> 
</RelativeLayout> 

Следующий код, где я вставить объект вида (таблица) внутри intenalLayout.

while (iteratorTables.hasNext()) { 
     [...] //Here i calculate the dimension and coordinates 
     b_table = new ButtonTable(SelzApplication.getAppContext(),tableMap.getValue(), widthTable, heightTable); 

     b_table.setX(Math.round((tableMap.getValue().getX())* Xratio)); 
     b_table.setY(Math.round((tableMap.getValue().getY())* Yratio)); 

     //add Touch Listeners to the button 
     b_table.setOnLongClickListener(new OnLongTuchDragDrop()); 
     b_table.setOnClickListener(new TableOnClick()); 


     layoutInternal.addView(b_table, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
    } 

Это скриншот моего приложения. enter image description here

+1

Ваш код макета правильно. Вид прокручивается красиво. Возможно, ваш контентный вид подходит для экрана, и прокрутка не требуется. Вставьте свой код из активности, пожалуйста. – SceLus

+0

@SceLus Я добавил код и снимок экрана моего макета. Спасибо !! –

+0

Для чего подходит внешний вид? Вы пытались удалить его, поскольку он не прокручивается? Если вам нужен внешний макет, я бы рекомендовал вам сделать это как ScrollView -> RelativeLayout (внешний) -> RelativeLayout (внутренний) – ezcoding

ответ

1

RelativeLayout layoutInternal имеет высоту первоначально установлен как android:layout_height="wrap_content" но его содержание изначально пуст, так как содержание создается динамически; по этой причине не прокручивается.

Чтобы решить эту проблему, когда вы закончите рисовать таблицы в RelativeLayout layoutInternal, вы должны установить его высоту динамически, как показано ниже:

FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) layoutInternal.getLayoutParams(); 
    params.height = max_y_coordinate_used; 
    layoutInternal.setLayoutParams(params);