2012-07-14 99 views
2

嗨我想加载一个按钮到一个视图寻呼机,我有它加载,但它目前正在填充整个屏幕我想它它包装内容到其确切的大小,然后放置它在屏幕中间。我试图设置按钮的layoutparams,但是当我运行应用程序它仍然填充父项。有谁知道如何以编程方式设置按钮的布局和位置?Android以编程方式设置按钮布局

继承人什么我都试过到目前为止

@Override 
     public Object instantiateItem(View collection, int position) { 

      RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
      LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      rel_btn.addRule(RelativeLayout.CENTER_VERTICAL); 
      rel_btn.addRule(RelativeLayout.CENTER_HORIZONTAL); 
      rel_btn.height = 60; 
      rel_btn.width = 60; 
      Button tv = new Button(cxt); 
      tv.setLayoutParams(rel_btn); 
      tv.setText("League " + (position+1)); 
      tv.setTextColor(Color.WHITE); 
      tv.setTextSize(30); 
      tv.setBackgroundDrawable(getResources().getDrawable(R.drawable.ls_level_eng1)); 

      ((ViewPager) collection).addView(tv,0); 

      return tv; 
     } 

回答

1

有你通过代码这样做什么特别的原因?你可以简单地膨胀一个布局,并使用布局编辑器来帮助你调整你的Button。这样你就不会那么猜测了。

public Object instantiateItem(View collection, int position) { 

final LayoutInflater mLayoutInflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

final View view = inflater.inflate(R.layout.your_layout, null); 

((ViewPager) collection).addView(view, 0); 

return view; 

在这种情况下,您需要这样做。我在代码中添加了注释。

public Object instantiateItem(View collection, int position) { 

    // Create your LayoutParams 
    final RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 

    // Add your rules 
    rel_btn.addRule(RelativeLayout.CENTER_VERTICAL); 
    rel_btn.addRule(RelativeLayout.CENTER_HORIZONTAL); 

    // And anything extra 
    rel_btn.height = 60; 
    rel_btn.width = 60; 

    // Create a new RelativeLayout for your RelativeLayout.LayoutParams 
    RelativeLayout relativeLayout = new RelativeLayout(MainActivity.this); 

    // Give your RelativeLayout LayoutParams 
    relativeLayout.setLayoutParams(rel_btn); 

    // Create your Button 
    Button tv = new Button(MainActivity.this); 
    tv.setText("League " + (position + 1)); 
    tv.setTextColor(Color.WHITE); 
    tv.setTextSize(30); 
    tv.setLayoutParams(rel_btn); 
    // You don't need to use setBackgroundDrawable if you're only 
    // grabbing a Resource 
    tv.setBackgroundResource(R.drawable.ls_level_eng1); 

    // Add your Button to your RelativeLayout 
    relativeLayout.addView(tv); 

    // Return your RelativeLayout 
    ((ViewPager)collection).addView(relativeLayout, 0); 
    return relativeLayout; 
} 
+0

是的,因为按钮将变成动态的,所以它的源将从数组中拉出我现在只用一个 – 2012-07-14 14:47:03

相关问题