2012-02-26 12 views
3

私は時間の経過と共に成長したいFrameLayoutを持っています。Android - FrameLayoutの幅を動的に設定する

私はRunnable-Interfaceを実装しました。

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

また、あなたがUIスレッドへのあなたの実行可能を投稿している作り、他のスレッドからUIの操作は未定義または違法またはひんしゅくを買うか何かです。あなたがハンドラを使用しているように見えるので、あなたはおそらくそうです。 – nmr

+0

ねえ、あなたの答えのおかげで、それは正常に動作しました...アンドロイド開発についての本を買って試してみました...そして、彼らは決してレイアウトのパラメータを戻すことはありません...ありがとうD –

+0

http:// stackoverflow。 com/questions/1114287/good-book-for-beginning-android-development :) – nmr

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); 
関連する問題