2012-02-26 63 views
3

我有一個FrameLayout,隨着時間的推移我想要增長。Android - 動態設置FrameLayout寬度

我已經實現了一個Runnable接口。

public void run() { 
    time_value++; 

    FrameLayout fl_dateTime = (FrameLayout)findViewById(R.id.game_DateTime); 
     LayoutParams lp_fl_dateTime = fl_dateTime.getLayoutParams(); 

    lp_fl_dateTime.width = time_value; 

    handler.postDelayed(this, 100); 
} 

爲什麼不能正常工作? O_O

回答

3

您需要在修改佈局參數後重新設置佈局參數。

View#setLayoutParams(ViewGroup.LayoutParams lp)

+0

此外,請確保您將您的runnable發佈到UI線程,來自其他線程的UI操作未定義或非法或皺眉之類。看起來你正在使用處理程序,所以你可能是。 – nmr 2012-02-26 17:12:36

+0

嘿,謝謝你的答覆,它工作得很好......買了一本關於Android開發的書,並試用了它......而且他們從未設置過佈局參數......非常感謝:D – 2012-02-26 17:14:34

+0

http:// stackoverflow。 com/questions/1114287/good-book-for-beginning-android-development :) – nmr 2012-02-26 17:21:20

0

我能夠通過設置幀0dp的初始大小,然後就設置爲任何我想要的minWidth做到這一點。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:background="@android:color/black" 
      android:id="@id/layout" 
      android:minHeight="50dp" 
      android:measureAllChildren="false"> 

item.setMinimumWidth(10dp);