2011-02-09 9 views
4

私はUIをプログラム的に変更する必要があるアプリケーションを作成しています。 layout_heightlayout_widthのXML属性を変更する必要がありました。android UIのsetLayoutParamsメソッドの問題

しかし、setLayoutParamsメソッドを使用すると、アプリケーションが実行され、予期せず動作しなくなり、強制的に閉じる必要があるというメッセージが表示されます。

私はViewGroup.LayoutParamsとしてLayoutParamsを設定しようとしました。 しかし、何も動作しません。親切に添付のコードとガイドを確認してください。

これはJavaコードです。

private void fixLayoutVmain(){ 
    ListView lv; 
    ImageButton rev,stop,play,forw; 
    lv=(ListView)findViewById(R.id.ListMain); 
    rev=(ImageButton)findViewById(R.id.rev); 
    stop=(ImageButton)findViewById(R.id.stop); 
    play=(ImageButton)findViewById(R.id.plpa); 
    forw=(ImageButton)findViewById(R.id.forw); 
    Log.d("DEV1","ID's have been assigned"); 
    LayoutParams lp=new LayoutParams(W, ((75*H)/100));  
    Log.d("DEV1","param object created");  
    lv.setLayoutParams(lp);  
    Log.d("DEV1","ListView param set");  
    lp.height=(int)(10*H)/100; 
    lp.width=(int)(10*H)/100; 
    Log.d("DEV1","Changes to param made"); 
    rev.setLayoutParams(lp);  
    Log.d("DEV1","Reverse Button param applied"); 
    stop.setLayoutParams(lp); 
    Log.d("DEV1","Stop button param applied"); 
    play.setLayoutParams(lp); 
    Log.d("DEV1","forward button param applied"); 
    forw.setLayoutParams(lp); 
    Log.d("DEV1","All imagebutton changes have been made"); 

} 

これは、あなたがアンドロイド付属していないので、それはあなたのアプリケーションがクラッシュしたように見えるXMLファイル

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <ListVieW 
     android:id="@+id/ListMain" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="horizontal" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:gravity="bottom"> 
      <ImageButton 
       android:id="@+id/rev" 
       android:src="@drawable/reverseimg" 
       android:background="@null" 
       android:scaleType="fitXY" /> 
      <ImageButton 
       android:id="@+id/stop" 
       android:src="@drawable/stopimg" 
       android:background="@null" 
       android:scaleType="fitXY" /> 
      <ImageButton 
       android:id="@+id/plpa" 
       android:src="@drawable/playimg" 
       android:background="@null" 
       android:scaleType="fitXY" /> 
      <ImageButton 
       android:id="@+id/forw" 
       android:src="@drawable/forwardimg" 
       android:background="@null" 
       android:scaleType="fitXY" /> 
    </LinearLayout> 
</LinearLayout> 
+1

エラーログには、a)特定のエラーと、b)エラーの原因となったコードの行が表示されます。これらの詳細を投稿してください。 –

+0

logcatログを取得するには、eclipseでDDMSパースペクティブを開くか、コマンドラインから 'adb logcat'を実行します。 –

+0

あなたのコードをどのようにデバッグすることさえできるのだろうか。 –

答えて

2

です:あなたImageButtonsにlayout_height:layout_widthとアンドロイドを。

あなたがコードで幅と高さを設定しようとしている場合でも、あなたはそれぞれのImageButtonのためのあなたのxmlファイルにこれらのパラメータを追加する必要があります。

<ImageButton     
    android:id="@+id/rev"    
    android:src="@drawable/reverseimg" 
    android:background="@null" 
    android:scaleType="fitXY"            
    android:layout_height="0dp" 
    android:layout_width="0dp" 
    /> 
10

あなたがLayoutParamsを設定するときはいつでも、親コンテナをチェックしますビューのすべてのインスタンスで、親はLinearLayoutです。あなたはそうのような、LinearLayout.LayoutParamsを使用する必要があります。

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(width, height); 
lv.setLayoutParams(lp); 

それはあなたの特定の力に近い問題やないのかどうか、私たちが知る方法はありません。コメントに記載されているように、LogCatをチェックして例外の詳細をここに投稿する必要があります。これを試してみて、それが問題を解決するかどうか確認してください。

0

私はもう一度チェックし、上記の回答の両方の変更を行いました。 それでも動作しませんでした。

しかし、私はsetContentView()メソッドを使用する前に関数を実行していることが分かりました。 ビューが作成されていないため、変更を行うことができませんでした。

setContentView()メソッドの後に私の機能を置くと正常に動作します。

ありがとうございました。