【问题标题】:Android Programmatically set button layoutAndroid 以编程方式设置按钮布局
【发布时间】:2012-07-14 23:37:10
【问题描述】:

您好,我正在尝试将一个按钮加载到视图寻呼机中,并且我已将其加载,但它目前正在填充整个屏幕,我希望它将内容包装到其确切大小,然后将其放置在屏幕。我试图为按钮设置布局参数,但是当我运行应用程序时它仍然填充父级。有谁知道如何以编程方式设置按钮的布局和位置?

这是我到目前为止所尝试的

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

【问题讨论】:

    标签: android button


    【解决方案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;
    }
    

    【讨论】:

    • 是的,因为按钮将变为动态的,因此它的源将从数组中提取我现在只是尝试使用一个
    猜你喜欢
    • 1970-01-01
    • 2012-07-10
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多