Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android编程设置按钮布局 嗨,我试着把一个按钮加载到一个视图寻呼机中,我把它装入,但是它正在填充整个屏幕,我希望它把内容包装到它的精确大小,然后把它放在屏幕中间。我尝试为按钮设置layoutparams,但当我运行应用程序时,它仍然会填充父级。有人知道如何通过编程设置按钮的布局和位置吗_Android_Button - Fatal编程技术网

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;
}

是的,因为按钮将变得动态,所以它的源将从一个数组中提取,我现在正在尝试使用一个数组