3

我如何通过android中的java代码设置重力,我有一个像这样的Remoteview RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); 我想通过java代码添加重力。我尝试使用这种方式,但它不成功。

 views.setGravity(Gravity.CENTER);
4

1 回答 1

2

答案取决于您要调用该方法的视图类型。如果它是例如 LinearlLayout,这将完成这项工作:

rv.setInt(R.id.MyView, "setGravity", Gravity.CENTER);

我在 LinearLayout 和 TextView 上对其进行了测试,它确实适用于布局,但不适用于 TextView。所以我的假设是它只受 ViewGroup 类的支持(您可以通过检查 Android 源代码中的 @android.view.RemotableViewMethod 注释的 setGravity(int) 方法自己检查该假设)。

因此,如果您想以编程方式更改 TextView 的重力,则需要将 TextView 包装在其自己的 LinearLayout 中并改为更改 LinearLayout 的重力,例如使用以下布局:

<LinearLayout
    android:id="@+id/day_header_title_wrapper"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/day_header_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

并像这样设置重力:

rv.setInt(R.id.day_header_title_wrapper, "setGravity", Gravity.CENTER);
于 2013-03-07T17:46:25.427 回答