如何绘制一个矩形,其高度设置为填充父级?

时间:2012-12-18 10:43:52

标签: android

我正在尝试在应用程序中实现一个指示器,该指示器显示外部设备的音量级别。为此,我创建了一个Layout,它应该根据所述设备的当前音量将Rectangle子项绘制为运行时。

我该如何完成此操作?具体来说,我希望绘制这些高度与其父级相匹配的矩形。

2 个答案:

答案 0 :(得分:0)

使用ProgressBar或SeekBar(带触摸禁用)视图并使用其方法setProgress(int value)进行更新。

答案 1 :(得分:0)

我认为这对你的任务有所帮助。实际上这很简单,只需要将LinearLayout与一些宽度相等的孩子放在一起。

import java.util.ArrayList;

import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class CustomView extends LinearLayout {
    private ArrayList<ImageView> views = new ArrayList<ImageView>();

    public CustomView(Context context, AttributeSet attributeSet) {
        super(context, attributeSet);
        init(context);
    }

    public CustomView(Context context) {
        super(context);
        init(context);
    }

    private void init(Context context) {
        this.setOrientation(LinearLayout.HORIZONTAL);
        for (int i = 0; i < 10; i++) {
            ImageView loadingPiece = new ImageView(context);
            loadingPiece.setBackgroundColor(Color.RED);
            this.addView(loadingPiece);
            LayoutParams layoutParams = (LayoutParams)loadingPiece.getLayoutParams();
            layoutParams.weight = 1.0f;
            layoutParams.height = this.getHeight();
            layoutParams.width = 0;
            loadingPiece.setLayoutParams(layoutParams);
            views.add(loadingPiece);
        }
    }

    public void setPercentage(int amountToShow) {
        for (int i = 0; i < views.size(); i++) 
            if (i < amountToShow)
                views.get(i).setVisibility(View.VISIBLE);
            else
                views.get(i).setVisibility(View.INVISIBLE);
    }
}

希望它有所帮助。