【问题标题】:Set gravity for RemoteView in android through java通过java在android中为RemoteView设置重力
【发布时间】:2013-03-06 09:10:10
【问题描述】:

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

 views.setGravity(Gravity.CENTER);

【问题讨论】:

    标签: android android-widget gravity


    【解决方案1】:

    答案取决于您要调用该方法的视图类型。如果是例如一个 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);
    

    【讨论】:

    • 也许如果您详细说明“不工作”部分,那么我可以提供一些建议
    • @EmanuelMoecklin,是的,它对我也不起作用。它是小部件上的线性布局。而且我按照你的回答设置后没有变化。
    • @stuckedoverflow 的想法是将 TextView 作为您的内容,将 LinearLayout 作为您的 TextView 的样式持有者。前任;背景、大小等。因此,当您更改重力时,TextView 将在 LinearLayout 内部移动以模拟 TextView 重力效果。希望这会在 6 年后有所帮助:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 2016-11-07
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多