プログラムでビューの重力を設定する 質問する

プログラムでビューの重力を設定する 質問する

私はAndroidソースコードに取り組んでいますView。カスタムに複数の重力を設定するにはどうしたらよいかと思いました。View

これはXMLです

<com.android.systemui.statusbar.policy.Clock
        android:id="@+id/clock"
        android:textAppearance="@style/TextAppearance.StatusBar.Clock"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:singleLine="true"
        android:paddingLeft="6dip"
        android:gravity="center_vertical|left"
        />

ご覧のとおり、デフォルトの重力はcenter_vertical|leftなので、Javaコードは次のようになります。

    View clock = mStatusBarView.findViewById(R.id.clock);

    if (clock != null) {
        SOMEHOW SET GRAVITY -> mCenterClock ? Gravity.CENTER : (Gravity.CENTER_VERTICAL | Gravity.LEFT);
    }

setGravity メソッドは では機能しませんView。 では、デフォルトで幅と高さを失うことなく重力を設定する代替手段はありますか?

前もって感謝します。

ベストアンサー1

com.android.systemui.statusbar.policy.Clock は TextView を拡張しているので、それを TextView にキャストして重力を設定するだけです。

 TextView clock = (TextView) mStatusBarView.findViewById(R.id.clock);
 clock.setGravity(mCenterClock ? Gravity.CENTER : (Gravity.CENTER_VERTICAL | Gravity.LEFT));

参照:ソースコード

おすすめ記事