AOSP 4.0.4 中的扩展状态栏布局有一个 TextView,在 XML 中看起来像这样
<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 在我的班级中为空。有什么我想念的吗?我一直在寻找几个小时并在这里和那里尝试一些东西,但没有任何效果。我拥有中级 Java 技能,但我仍在努力拥抱来自 20 年过程语言的 OOP 事物。提前致谢。
我将 mDateView 的定义更改为如下所示:
private DateView mDateView;
DateView mDateView = (DateView) findViewById(R.id.date);
但我仍然得到 mDateView 为空:(