簡體   English   中英

以編程方式設置視圖的重力

[英]Set gravity of a View Programmatically

我在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不起作用。 那么是否可以選擇設置重力而不會丟失寬度和高度?

提前致謝。

由於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));

參考: 源代碼

你有沒有嘗試過?

clock.setGravity(Gravity.CENTER | Gravity.CENTER_VERTICAL);

編輯:

既然您不能將setGravity用於普通View ,請執行以下操作,

你可以使用RelativeLayout並設置這樣的規則......

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
params.addRule(RelativeLayout.CENTER_HORIZONTAL|RelativeLayout.CENTER_IN_PARENT, clock.getId());
 com.android.systemui.statusbar.policy.Clock clock = (com.android.systemui.statusbar.policy.Clock)mStatusBarView.findViewById(R.id.clock);

 clock.setGravity(Gravity.CENTER_VERTICAL);

嘗試上面的代碼並刪除View clock = mStatusBarView.findViewById(R.id.clock);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM