3

アンドロイドでJavaコードを介して重力を設定する方法、私はこのようなRemoteviewを持っています私はJavaコードを介して RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); 重力を追加したいです。私はこの方法を使用してみましたが、成功しません。

 views.setGravity(Gravity.CENTER);
4

1 に答える 1

2

答えは、メソッドを呼び出すビューのタイプによって異なります。たとえば LinearlLayout の場合は、次のようにします。

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

LinearLayout と TextView でテストしたところ、レイアウトでは機能しますが、TextView では機能しません。したがって、ViewGroup クラスのみでサポートされていると仮定します (@android.view.RemotableViewMethod アノテーションの Android ソースの 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 に答える