更改应用程序以使用 AppCompat 后视图消失
Views gone after changing app to use AppCompat
以前,我的应用程序根本不使用 AppCompat,但现在我需要它,因为有几个库需要它。问题是,在我开始使用 AppCompat 之后,一些 Views
(ImageView
和 SeekBar
)没有显示:
改变的是我现在使用 v7 支持库中的 AppCompatActivity
(而不是 Activity
)和 Theme.AppCompat.Light.DarkActionBar
(而不是 android:Theme.Holo.Light.DarkActionBar
)。
布局层次结构如下:
我知道这很复杂,但这是我能够实现我想要的目标的唯一方法。 (使用 foreground FrameLayout,这样我可以在打开特定弹出对话框时使应用程序的其余部分变暗。网格是通过使用多个 LinearLayouts 实现的。要获得垂直 SeekBars,我需要使用里面有SeekBar的FrameLayout,然后旋转一下,红色和蓝色"tiles"其实是FButtons)
我该如何解决这个问题?由于嵌套视图太多,我看不到 ImageButtons 和 SeekBar 的原因是什么?
我可以重现这个问题,这太奇怪了。
但是我设法通过将 android:elevation="2dp"
添加到 ImageView 的 RelativeLayout
中来显示 ImageViews
和 SeekBar
。我知道这不是解决方案,此外此属性适用于 Android API >= 21.
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="2dp">
// ImageViews and SeekBar here
...
</RelativeLayout>
另一种解决方法,但在 API 21 之前和之上有效。
在模拟器上测试 API 18.
将此放入您的 value/styles.xml
:
<style name="my_style">
// let this empty
</style>
将此放入您的 value-v21/styles.xml
:
<style name="my_style">
<item name="android:elevation">5dp</item> // above 2dp apparently...
</style>
然后将 style="@style/my_style"
添加到 每个 RelativeLayout
我在第一个答案中谈到。
<RelativeLayout
style="@style/my_style"
android:layout_width="match_parent"
android:layout_height="match_parent">
// ImageViews and SeekBar here
...
</RelativeLayout>
在进一步挖掘时,我发现 。
以前,我的应用程序根本不使用 AppCompat,但现在我需要它,因为有几个库需要它。问题是,在我开始使用 AppCompat 之后,一些 Views
(ImageView
和 SeekBar
)没有显示:
改变的是我现在使用 v7 支持库中的 AppCompatActivity
(而不是 Activity
)和 Theme.AppCompat.Light.DarkActionBar
(而不是 android:Theme.Holo.Light.DarkActionBar
)。
布局层次结构如下:
我知道这很复杂,但这是我能够实现我想要的目标的唯一方法。 (使用 foreground FrameLayout,这样我可以在打开特定弹出对话框时使应用程序的其余部分变暗。网格是通过使用多个 LinearLayouts 实现的。要获得垂直 SeekBars,我需要使用里面有SeekBar的FrameLayout,然后旋转一下,红色和蓝色"tiles"其实是FButtons)
我该如何解决这个问题?由于嵌套视图太多,我看不到 ImageButtons 和 SeekBar 的原因是什么?
我可以重现这个问题,这太奇怪了。
但是我设法通过将 android:elevation="2dp"
添加到 ImageView 的 RelativeLayout
中来显示 ImageViews
和 SeekBar
。我知道这不是解决方案,此外此属性适用于 Android API >= 21.
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="2dp">
// ImageViews and SeekBar here
...
</RelativeLayout>
另一种解决方法,但在 API 21 之前和之上有效。 在模拟器上测试 API 18.
将此放入您的 value/styles.xml
:
<style name="my_style">
// let this empty
</style>
将此放入您的 value-v21/styles.xml
:
<style name="my_style">
<item name="android:elevation">5dp</item> // above 2dp apparently...
</style>
然后将 style="@style/my_style"
添加到 每个 RelativeLayout
我在第一个答案中谈到。
<RelativeLayout
style="@style/my_style"
android:layout_width="match_parent"
android:layout_height="match_parent">
// ImageViews and SeekBar here
...
</RelativeLayout>
在进一步挖掘时,我发现