使用sdp编程更改边距

9
我正在使用 compile 'com.intuit.sdp:sdp-android:1.0.3' API 来设置线性布局的边距,如下所示。
<LinearLayout
        android:id="@+id/layout_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="@dimen/_10sdp"
        android:layout_marginTop="@dimen/_10sdp"
        android:padding="@dimen/_8sdp"
        android:orientation="vertical">
</LinearLayout>

现在当我以编程方式更改边距时,它会以dp而不是sdp的方式更改。

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

params.setMargins(0, 10, 10, 0);
layout_message.setLayoutParams(params);

那么如何根据sdp编程来更改边距?谢谢。

你为什么要使用这个SDP? - Aman Gupta - ΔMΔN
它会自动调整您的应用程序布局设计以适应不同的屏幕尺寸,这意味着如果您正在使用sdp为移动设备构建应用程序,则相同的设计尺寸将出现在平板电脑屏幕上,您无需显式执行此操作。 - shehzy
1个回答

33
你可以尝试。 对于Java
int margin = getResources().getDimensionPixelSize(R.dimen._10sdp);
params.setMargins(0, margin, margin, 0);

对于Kotlin,正如Zohab Ali所指出的。

resources.getDimensionPixelSize(R.dimen._10sdp)

5
对于 Kotlin,resources.getDimensionPixelSize(R.dimen._10sdp) 的意思是获取 R.dimen._10sdp 像素值,并将其转换为整数像素值。 - Zohab Ali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接