自定义视图并更改子视图的大小

时间:2014-07-21 10:32:52

标签: java android

我有一个从FrameLayout扩展的自定义视图。我希望其中一个孩子的大小等于总大小的20%,如图所示。

即使自定义视图在运行时更改其大小,如何使imageview始终具有此大小?

enter image description here

1 个答案:

答案 0 :(得分:0)

让我们说你有自己的观点:

FrameLayout view = (FrameLayout)findViewById(R.id.customView);

然后你可以得到view的layoutParams计算20%,然后创建一个新视图,它将占视图的20%。

例如:

ImageView img = new ImageView(this);
int imgSize = view.getLayoutParams().width * 0.2; //20 % of the width
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(imgSize, imgSize);
//params.gravity = Gravity.TOP;//How to set gravity programmatically
img.setLayoutParams(params);
//Set img attirubutes like src etc.

view.addView(img)

另外,因为您正在使用FrameLayout,最好首先创建LayoutParam的实例并将其设置为img.setLayoutParams(params),因为我确定您要更改不同视图的layout_gravity ,你可以在params vairable

中做