我有一个从FrameLayout扩展的自定义视图。我希望其中一个孩子的大小等于总大小的20%,如图所示。
即使自定义视图在运行时更改其大小,如何使imageview始终具有此大小?
答案 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