【问题标题】:Margins not working边距不起作用
【发布时间】:2012-09-05 09:55:30
【问题描述】:

我以编程方式制作了以下布局:

LinearLayout progressLayout = new LinearLayout(this);
    progressLayout.setOrientation(LinearLayout.VERTICAL);

    TextView t = new TextView(this);
    t.setText("Test..");
    t.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);

    LayoutParams l = new LayoutParams(android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
    l.setMargins(10, 10, 10, 25);   ===> does not work? 
    t.setLayoutParams(l);

    ProgressBar circle = new ProgressBar(this, null,
            android.R.attr.progressBarStyleLarge);
    circle.setLayoutParams(new LayoutParams(android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT));


    progressLayout.setLayoutParams(new LayoutParams(
            android.view.ViewGroup.LayoutParams.FILL_PARENT,
            android.view.ViewGroup.LayoutParams.FILL_PARENT));

    progressLayout.setGravity(Gravity.CENTER);

    progressLayout.addView(t);
    progressLayout.addView(circle);

    this.setContentView(progressLayout);

但是我在 setMargins 中给出的值没有任何意义,它根本没有任何效果。
是什么原因?

布局的高度和宽度为fill_parent,所以这不是问题..

谢谢:)

【问题讨论】:

  • 你使用什么样的 LayoutParams ?
  • 您应该使用 LinearLayout.LayoutParams,因为您将视图放在 LinearLayout 中(尽管这应该不是问题,因为两者都是 MarginLayoutParams)

标签: android android-layout


【解决方案1】:
progressLayout.setGravity(Gravity.CENTER); 

将文本视图和进度条居中对齐。

【讨论】:

  • 这就是我想要实现的,但我想在 textview 和进度条之间留出一些余量。
【解决方案2】:

试试这个解决方案

LinearLayout progressLayout = new LinearLayout(this);
        progressLayout.setOrientation(LinearLayout.VERTICAL);

        TextView t = new TextView(this);
        t.setText("Test..");
        t.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);

        LayoutParams l = new LayoutParams(
                android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
                android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
        // ===> does not work?
        // l.setMargins(50, 50, 50, 25);
        // t.setLayoutParams(l);
        l.leftMargin = 10;
        l.topMargin = 0;
        l.rightMargin = 0;
        l.bottomMargin = 150;

        ProgressBar circle = new ProgressBar(this, null,
                android.R.attr.progressBarStyleLarge);
        LayoutParams p = new LayoutParams(
                android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
                android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
        // circle.setLayoutParams(p);
        p.leftMargin = 0;
        p.topMargin = 0;
        p.rightMargin = 0;
        p.bottomMargin = 20;

        progressLayout.setLayoutParams(new LayoutParams(
                android.view.ViewGroup.LayoutParams.FILL_PARENT,
                android.view.ViewGroup.LayoutParams.FILL_PARENT));

        progressLayout.setGravity(Gravity.CENTER);

        progressLayout.addView(t, l);
        progressLayout.addView(circle, p);

        this.setContentView(progressLayout);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 2017-07-02
    • 2015-10-02
    • 1970-01-01
    相关资源
    最近更新 更多