2013-08-21 3 views
1

Когда я изменяю видимость, макет остается тем же и не изменяется, как ожидалось. Вот мой XML:Видимость изменена программно не совпадает с весами

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

<GameView 
    android:id="@+id/gameview" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="5" 
    android:layout_gravity="top" /> 

<TextView android:id="@+id/code" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="4"/> 
</LinearLayout> 

А вот код из моей деятельности:

lazy val mCodeView: TextView = findViewById(R.id.code).asInstanceOf[TextView] 

def changeState() = { 
    mCodeView.setVisibility(if(mCodeView.getVisibility() == View.GONE) View.VISIBLE else View.GONE) 
} 

Когда я звоню changeState(), однако, CODEVIEW исчезают, но Gameview не изменяется. Почему и как автоматически изменять размер?

ответ

3

мне наконец удалось его на работу, добавив LinearLayout закрывающий Gameview и другой заключени TextView, и изменение веса этих LinearLayouts:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:id="@+id/layout1" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="5"> 
     <GameView 
      android:id="@+id/gameview" 
      android:id="@+id/gameview" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_gravity="top" /> 
    </LinearLayout> 
    <LinearLayout android:id="@+id/layout2" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="4"> 
     <TextView android:id="@+id/code" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"/> 
    </LinearLayout> 

</LinearLayout> 

И в моем коде:

private lazy val mLayout2 = findViewById(R.id.layout2).asInstanceOf[LinearLayout] 

val params = mLayout2.getLayoutParams().asInstanceOf[LinearLayout.LayoutParams] 
params.weight = 4f - params.weight 
mLayout2.getParent().requestLayout() 

Надеюсь, однажды это поможет кому-то, имеющему одну и ту же проблему.

+0

Часть запроса getParent(). RequestLayout была исправлена ​​моя проблема. – startoftext

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