2012-06-11 17 views
5

相対レイアウトに画像ビューを追加する際に問題があります。私はRelativeLayoutを使って動的に作成しているメニュー項目のリストに画像を追加したいと思います。私のメニュー項目はすべてうまく表示されていますが、各項目に画像を追加しようとすると、矢印が1つしか表示されず、縦方向に中央に表示されません。以下は私のコードです。あなたの助けが大変ありがとうございます。相対的レイアウトでImageViewをプログラム的に調整できない

私のコードで 私のXMLファイルで

<RelativeLayout 
      android:id="@+id/pMenu" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

     </RelativeLayout> 

private void buildMenu(String name, int id) { 

     String[] menuItems = getResources().getStringArray(pMenus[id]); 
     // Get the rel layout from xml 
     RelativeLayout container = (RelativeLayout) findViewById(R.id.pMenu); 

     int imageId=1; 
     Typeface tf = Typeface.createFromAsset(this.getAssets(),"mreavesmodot-reg.otf"); 
     for(String menuItem: menuItems) {   

      // Defining the layout parameters 
      RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT, 
        RelativeLayout.LayoutParams.WRAP_CONTENT); 


      StyledButton menuImage = new StyledButton(this); 
      menuImage.setBackgroundResource(R.drawable.menu_button); 
      menuImage.setText(menuItem); 
      menuImage.setTypeface(tf); 
      menuImage.setTextSize(19); 
      menuImage.setPadding(20, 0, 0, 0); 
      menuImage.setTextColor(Color.WHITE); 
      menuImage.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL); 
      menuImage.setOnClickListener(getOnClickListener(menuImage, name)); 
      menuImage.setId(imageId); 

      if(imageId==1) { 
       lp.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
      } else { 
       lp.addRule(RelativeLayout.BELOW ,imageId-1); 
      } 
      menuImage.setLayoutParams(lp); 


      ImageView arrow = new ImageView(this); 
      arrow.setImageResource(R.drawable.arrow_menu); 
      arrow.setPadding(0, 0, 15, 0); 
      RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
        RelativeLayout.LayoutParams.WRAP_CONTENT); 
      params.addRule(RelativeLayout.ALIGN_RIGHT,menuImage.getId()); 
      params.addRule(RelativeLayout.CENTER_VERTICAL); 

      arrow.setLayoutParams(params); 

      container.addView(menuImage); 
      container.addView(arrow); 

      imageId++; 
     } 
    } 
+1

何が起こっているかを示すスクリーンショットを追加できますか?私はあなたが説明することを知っているが、イメージはより記述的かもしれない。 –

答えて

4

私は下の行はあなたの問題はYES、あなたが最も可能性の高い複数の矢印を追加している

params.addRule(RelativeLayout.CENTER_VERTICAL); 

だと思います、それらは完全に相対的なレイアウトの垂直方向の中心に合わせられた互いの上の単なる単なる1つのものである。このコマンドは、ボタンアイテムに対して垂直方向のセンタリングを実行していませんが、親RelativeLayoutに対しても同じです。

+0

これは実際に私のコードの問題でした。私はRelativeLayout.RIGHT_OFを使用して終了しました。それは私のために働いた。 – Byron

関連する問題