我如何通过android中的java代码设置重力,我有一个Remoteview像这样RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
我想通过Java代码添加重力。我尝试过使用这种方式,但是不成功。
views.setGravity(Gravity.CENTER);
答案取决于您要在其上调用该方法的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);