[通过Java为Android中的RemoteView设置重力

问题描述 投票:2回答:1

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

 views.setGravity(Gravity.CENTER);
android android-widget gravity
1个回答
1
投票

答案取决于您要在其上调用该方法的View的类型。如果是一个LinearlLayout,这将完成工作:

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

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

因此,如果您要以编程方式更改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);
© www.soinside.com 2019 - 2024. All rights reserved.