gpt4 book ai didi

android - 编辑 SystemUI 布局 XML

转载 作者:搜寻专家 更新时间:2023-11-01 09:37:17 25 4
gpt4 key购买 nike

我正在尝试修改我的 SystemUI,以便蜂窝信号状态更类似于 AOSP。我已经替换了必要的图像,但现在布局不正确。

现在,它看起来像这样: enter image description here在 AOSP 上,它看起来像这样: enter image description here

目标是让 E 图标和数据箭头实际与信号栏三角形重叠。

我在 SystemUI APK 中找到了正确的 XML (/res/layout/mobile_signal_group.xml)。这是原文:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@id/mobile_slot" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingStart="@dimen/signal_cluster_padding"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:systemui="http://schemas.android.com/apk/res-auto">
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/slot_no_sims" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/accessibility_no_sims" />
<LinearLayout android:orientation="horizontal" android:id="@id/data_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/data_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/data_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
</LinearLayout>
<FrameLayout android:id="@id/mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/mobile_sim_icon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<com.android.systemui.statusbar.AnimatedImageView android:theme="@style/DualToneLightTheme" android:id="@id/mobile_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" systemui:hasOverlappingRendering="false" />
<com.android.systemui.statusbar.AnimatedImageView android:theme="@style/DualToneDarkTheme" android:id="@id/mobile_signal_dark" android:layout_width="wrap_content" android:layout_height="wrap_content" android:alpha="0.0" systemui:hasOverlappingRendering="false" />
<ImageView android:id="@id/mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="end|bottom|center" android:id="@id/mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
<FrameLayout android:id="@id/mobile_combo_2stage" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:layout_gravity="bottom|center" android:id="@id/data_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/data_rat_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/voice_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/voice_rat_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
</LinearLayout>
</FrameLayout>

我修改了 @id/data_type@id/data_inout 并将它们移动到 @id/mobile_sim_icon 的正下方:

<FrameLayout android:id="@id/mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/mobile_sim_icon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/data_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/data_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<com.android.systemui.statusbar.AnimatedImageView android:theme="@style/DualToneLightTheme" android:id="@id/mobile_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" systemui:hasOverlappingRendering="false" />
<com.android.systemui.statusbar.AnimatedImageView android:theme="@style/DualToneDarkTheme" android:id="@id/mobile_signal_dark" android:layout_width="wrap_content" android:layout_height="wrap_content" android:alpha="0.0" systemui:hasOverlappingRendering="false" />
<ImageView android:id="@id/mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="end|bottom|center" android:id="@id/mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>

(简化的代码 fragment )

但是当我执行此操作并使用修改后的 XML 闪烁时,SystemUI 会进入崩溃启动循环。似乎我对 XML 所做的任何更改都会导致此问题。我对此很陌生,所以我可能错过了一步。

到目前为止我已经尝试过:

  • 移动data-type, data-inout到另一个FrameLayout
  • 将整个 LinearLayout 移动到 FrameLayout 中
  • data_combo LinearLayout 包裹在 mobile_combo FrameLayout

所有这些都会导致 SystemUI 陷入崩溃循环。

还有什么我可以尝试的吗?

设备:

  • LG V20 T-Mobile (H918)
  • 安卓7.0

最佳答案

讨论 in the chat ,当您将 @id/data_type@id/data_inout 移到 @id/data_combo 之外时,SystemUI 会因 NullPointerException 而崩溃。这是因为正在针对 R.id.data_combo 调用 findViewbyId(),因此正在寻找 @id/data_combo 的直接后代.

由于您无权访问 Java 源代码,一种解决方法是将 @id/data_combo 包裹在 @id/mobile_combo 中,以便 @id/data_type@id/data_inout 仍然是 @id/data_combo 的直接后代。例如:

<LinearLayout android:id="@id/data_combo" ... > 
<FrameLayout android:id="@id/mobile_combo" ... >
...
</FrameLayout>
</LinearLayout>

关于android - 编辑 SystemUI 布局 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42069052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com