2012-03-08 16 views
1

私の主なアクティビティには、relativeLayoutがあります。これにはIconTrayというカスタムクラスが動的に追加されています。これはExtends TableLayoutです。 IconTrayはArrayListを受け取り、テーブルを構築します。テーブルがすべてビルドされ、imageViewsが配置された後、テーブルをセンタースクリーンに配置したいと思います。私の質問は、どのように私はIconTrayを配置し、それをメインのアクティビティから行うのか、それともから行うのかです。RelativeLayoutにカスタムテーブルビューを配置する

マイMainActivity:

import java.util.ArrayList; 
import android.app.Activity; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 
import android.graphics.Point; 
import android.os.Bundle; 
import android.util.AttributeSet; 
import android.util.DisplayMetrics; 
import android.util.Log; 
import android.view.Display; 
import android.view.View; 
import android.view.View.OnLongClickListener; 
import android.widget.RelativeLayout; 
import android.widget.Toast; 

public class HomeFavesActivity extends Activity implements OnClickListener, OnLongClickListener{ 

    private static final String TAG = "HomeFavesCatovoty"; 
    private ArrayList<Integer> mIcons = new ArrayList<Integer>(); 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 



     Log.v(TAG, "CREATED"); 

     DataBaseManager db = new DataBaseManager(this); 
     db.getWritableDatabase(); 
     db.AddHomeScreenIcon(1); 
     db.AddHomeScreenIcon(2); 
     db.AddHomeScreenIcon(3); 
     /*db.AddHomeScreenIcon(4); 
     db.AddHomeScreenIcon(5); 
     db.AddHomeScreenIcon(6); 
     db.AddHomeScreenIcon(7);*/ 

     getScreenIcons(db); 


    } 

    private void getScreenIcons(DataBaseManager db){ 
     mIcons = db.getHomeScreenIcons(); 
     Log.v(TAG, "List Length:"+ mIcons.size()); 

     IconTray iconTray = new IconTray(this, mIcons, null); 
     RelativeLayout rl = (RelativeLayout)findViewById(R.id.main); 

     DisplayMetrics metrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(metrics); 

     int screenWidth = metrics.heightPixels; 
     int screenHeight =metrics.widthPixels; 

     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(screenWidth, screenHeight); 
     params.addRule(RelativeLayout.CENTER_IN_PARENT); 
     iconTray.setLayoutParams(params); 
     rl.addView(iconTray); 


    } 


    public void onClick(DialogInterface arg0, int arg1) { 
     // TODO Auto-generated method stub 

    } 

    public boolean onLongClick(View v) { 

     Toast.makeText(this, "woot", 
      Toast.LENGTH_SHORT).show(); 
     return true; 
    } 

} 

マイレイアウトXML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/hello" /> 

    <RelativeLayout 
     android:id="@+id/main" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="center" 
     > 

    </RelativeLayout> 

</LinearLayout> 

答えて

0

あなたのHomeFavesActivityからこれを行うことができます。

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(someWidth, someHeight); 
params.addRule(RelativeLayout.CENTER_IN_PARENT); 
iconTray.setLayoutParams(params); 

あなたはこの小さなあなたはアイコンの高さと幅をしたいかに応じて、一緒にプレイする必要があります:あなたはgetScreenIcons方法でrl.addView(iconTray)を呼び出す直前に、このようなコードを追加しますトレーを動かすことができますが、これは正しい軌道に乗るはずです。

+0

これは垂直または水平にセンタリングされていないため、少し混乱しています。それは幅に沿ってそれを動かすように見えますが、テーブルに置いたアイコンの数にかかわらず同じx位置にテーブルを置いています。私は上記の私の主な活動を編集しました。 – erik

+0

私はXMLファイルの相対レイアウトの幅を "match_parent"に設定します。これにより相対レイアウトの幅が画面に表示され、アイコントレイが少なくとも水平方向に中央に来るようになります。そのショットを与えて、それがどうなるか教えてください。 – harrisonlee

+0

私はカスタムのTableLayoutクラスで、もう少し制御して処理を終えました。 this.setY(screenWidth/2 - TH/2 -240); this.setX(screenHeight/2 - TW/2 -40); – erik

関連する問題