AOSP 4.0.4 の Expanded_status_bar レイアウトには、XML で次のような TextView があります。
<com.android.systemui.statusbar.policy.DateView
android:id="@+id/date"
android:textAppearance="@style/TextAppearance.StatusBar.Date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="4dp"
android:singleLine="true"
android:gravity="center"
android:visibility="visible" />
「frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java」で生成されます
次のように、「frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java」によって膨張します。
ExpandedView expanded = (ExpandedView) View.inflate(context, R.layout.status_bar_expanded, null);
// stuff here
mDateView = (DateView) expanded.findViewById(R.id.date);
別のクラスを介してその可視性を設定したいのですが、ここで読んだいくつかのことを試しましたが、すべてうまくいきませんでした。私が最後に試みたのは、私のクラス(これもsystemuiの一部です)で、次を追加することでした:
TextView mDateView = (TextView) findViewById(R.id.date);
mDateView.setVisibility(View.GONE);
ただし、私のクラスでは mDateView が null であることがわかりました。足りないものはありますか?私は何時間もあちこちを見回して、あちこちで物事を試してきましたが、何もうまくいきません. 私は中級レベルの Java スキルを持っていますが、20 年間の手続き型言語から生まれた OOP のことを今でも理解しようとしています。前もって感謝します。
mDateView の定義を次のように変更しました。
private DateView mDateView;
DateView mDateView = (DateView) findViewById(R.id.date);
しかし、私はまだmDateViewをnullとして取得しています:(