Kyl*_*hes 2 java android gravity
我一直试图将这个自定义视图集中在我扩展LinearLayout的其他自定义视图中.这一切都需要通过代码来完成,因为它们都是在运行时完成的.
我已经尝试了设置引力的标准方法:
this.setGravity(Gravity.CENTER);
Run Code Online (Sandbox Code Playgroud)
这是在我的类中完成的,它扩展了LinearLayout.
我也尝试过LayoutParams方法:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
block.setLayoutParams(params);
this.addView(block);
Run Code Online (Sandbox Code Playgroud)
这是在我将块添加到视图的地方完成的(如您所见).
两种方法都导致块仍然在我视图的左上角对齐.我有什么其他选择,或者更重要的是,我做错了什么?
尝试设置布局权重:
LinearLayout.LayoutParams params =
new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER_HORIZONTAL;
params.weight = 1;
this.addView(block, params);
Run Code Online (Sandbox Code Playgroud)
这(假设您的方向是垂直的)将允许您的视图填充线性布局中的剩余空间并且应该水平居中.
我认为有一种方法可以让视图子项小于包含它的LinearLayout单元格.如果视图小于其"单元格",则LinearLayout将缩小以适应它.如果布局权重导致"单元格"增长,则包含的视图也将增长.
如果您确实希望视图小于其"单元格"并居中,请将其包装在FrameLayout中.然后,您将能够使用中心重力来满足您的内心需求.layout_width ="fill_parent"在xml中(我知道你不能直接使用它,但更容易用这种方式解释):
<LinearLayout orientation="vertical">
<FrameLayout layout_weight="1" layout_height="wrap_content">
<View layout_gravity="center" layout_{width,height}="wrap_content"/>
</FrameLayout>
... other views ...
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
未标记的布局属性是"fill_parent".
| 归档时间: |
|
| 查看次数: |
2864 次 |
| 最近记录: |