1

我目前有这个xml:

<TextView android:id="@+id/dummy"
android:layout_width="match_parent"
android:layout_height="match_parent" 
android:gravity="center"
android:text="@string/test"
android:textStyle="bold" />

我试图将其转换为 java 版本,以便我可以设置字体:

setContentView(R.layout.activity_main);

// the get the activity_main layout (getContentView method does not exist?)
FrameLayout layout = (FrameLayout) findViewById(android.R.id.content);

final TextView textView = new TextView(context);
textView.setId(R.id.dummy);

FrameLayout.LayoutParams contentLayout = new FrameLayout.LayoutParams(
    LayoutParams.MATCH_PARENT,
    LayoutParams.MATCH_PARENT);
contentLayout.gravity = Gravity.CENTER;
textView.setText(R.string.test);

Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/arial.ttf");
textView.setTypeface(tf);

layout.addView(textView, contentLayout);

我遇到的问题是重力不起作用或 match_parent。文本最终位于右上角,而不是像在 xml 版本上那样位于中心。

4

1 回答 1

1

在XML 中,您正在设置TextView. 在代码中,您正在设置 TextView 的布局重力。

要复制您在 XML 中所做的事情,请更改以下行:

contentLayout.gravity = Gravity.CENTER;

到:

textView.setGravity(Gravity.CENTER);

如果您的 XML 有android:layout_gravity="center"android:gravity="center"那么您的代码将按原样匹配。

于 2013-01-09T14:34:10.647 回答