设置样式边距并以编程方式将该样式应用于TextView

Raj*_*ran 15 android android-styles

在我的应用程序中,我想将8 dip的上下边距设置为textview.所以,如果我这样做 -

<TextView
android:id="@+id/tv_text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/settings_plain_text"/>
Run Code Online (Sandbox Code Playgroud)

它的风格内容很好 -

<style name="settings_plain_text">
    <item name="android:layout_marginTop"> 8dip </item>
    <item name="android:layout_marginBottom"> 8dip </item>
    <item name="android:textSize"> 18sp </item>
</style>
Run Code Online (Sandbox Code Playgroud)

但是当我以编程方式将相同的样式应用于textview时 -

textview.setTextAppearance(context, R.style.settings_plain_text);
Run Code Online (Sandbox Code Playgroud)

它没有显示我设置的顶部和底部边距.请帮忙.

Nac*_*cho -1

您可以使用此代码来实现它。

TextView tv = (TextView)findViewById(R.id.tv_text1);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)tv.getLayoutParams();
params.setMargins(0, 8, 0, 8); //substitute parameters for left, top, right, bottom
tv.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!

编辑:

public final class Values {
    public static final int MARGIN_TOP = 8;
    public static final int MARGIN_BOTTOM = 8;
}

TextView tv = (TextView)findViewById(R.id.tv_text1);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)tv.getLayoutParams();
params.setMargins(0, Values.MARGIN_TOP, 0, Values.MARGIN_BOTTOM); //substitute parameters for left, top, right, bottom
tv.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)