Hex*_*y21 2 java android constants android-linearlayout android-studio
我陷入了困境,我不知道如何在 MarginLayout 中将 px 转换为 dp
所以这是我的主要 MarginLayout 设置方法
public static void setMargins (View v, int l, int t, int r, int b) {
if (v.getLayoutParams() instanceof LinearLayout.MarginLayoutParams) {
LinearLayout.MarginLayoutParams p = (LinearLayout.MarginLayoutParams) v.getLayoutParams();
p.setMargins(l, t, r, b);
v.requestLayout();
}
}
Run Code Online (Sandbox Code Playgroud)
这是在元素更改其 marginLayout 的点击侦听器上
ArrowUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!Switch){
setMargins(AdditionalOperations, 0, 0, 0, 800);
Switch = true;
}
else{
setMargins(AdditionalOperations, 0, 0, 0, 715);
Switch = false;
}
}
});
Run Code Online (Sandbox Code Playgroud)
我的目标是将像素转换为 Dp,并以 DP 值(而不是 px)作为边距。我真的陷入了困境,无法理解
将像素值乘以设备显示密度。
final float density = context.getResources().getDisplayMetrics().density;
final int valueInDp = (int)(valueInPixels * density);
Run Code Online (Sandbox Code Playgroud)
在你的情况下将如下:
ArrowUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final float density = view.getResources().getDisplayMetrics().density;
if(!Switch){
setMargins(AdditionalOperations, 0, 0, 0, 800 * density);
Switch = true;
}
else{
setMargins(AdditionalOperations, 0, 0, 0, 715 * density);
Switch = false;
}
}
});
Run Code Online (Sandbox Code Playgroud)
提示:当您使用常量值时,您可能希望缓存它们而不是一直计算这些值。
| 归档时间: |
|
| 查看次数: |
3471 次 |
| 最近记录: |