Android编程设置按钮布局 嗨,我试着把一个按钮加载到一个视图寻呼机中,我把它装入,但是它正在填充整个屏幕,我希望它把内容包装到它的精确大小,然后把它放在屏幕中间。我尝试为按钮设置layoutparams,但当我运行应用程序时,它仍然会填充父级。有人知道如何通过编程设置按钮的布局和位置吗
这是我到目前为止试过的Android编程设置按钮布局 嗨,我试着把一个按钮加载到一个视图寻呼机中,我把它装入,但是它正在填充整个屏幕,我希望它把内容包装到它的精确大小,然后把它放在屏幕中间。我尝试为按钮设置layoutparams,但当我运行应用程序时,它仍然会填充父级。有人知道如何通过编程设置按钮的布局和位置吗,android,button,Android,Button,这是我到目前为止试过的 @Override public Object instantiateItem(View collection, int position) { RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
@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;
}
您通过代码执行此操作有什么特殊原因吗?您可以简单地对布局进行充气,并使用布局编辑器来帮助您调整
按钮
。这样你就不会猜那么多了
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;
}
是的,因为按钮将变得动态,所以它的源将从一个数组中提取,我现在正在尝试使用一个数组