我正在编写一个在 Android 4.0.3 上运行的应用程序,它通过 HDMI 使用视频输出进行显示。
我有一个在 VideoView 之上工作的有色透明 TextView,但是经过一系列看似无关的更改,我已经破坏了它并且无法让它再次工作。
我正在使用 SetBackgroundColor,即
myTextView.setBackgroundColor( Color.argb ( 128, 128, 0, 0 ) );
症状是 TextView 显示纯色背景颜色 (RGB 128,0,0) 并且没有透明度。如果我将 alpha 设置为 0 之间,背景将变得完全透明,但我仍然可以在 TextView 内的文本轮廓上辨认出 VideoView 后面的背景颜色。例如,当我将 alpha 设置为更高的值(例如 10)时,背景变为纯色,即上面的示例将变为 RGB(128,0,0)。
我已经摆弄了很多东西,例如setAlpha(float)
, setBackgroundColor(Color)
, 以不同的顺序动态创建视图, 在 XML 中创建和排序视图 , bringToFront()
, getBackground().setAlpha( int )
,android:background="@android:color/transparent"
都没有进一步的成功。
我构建了另一个简单的应用程序,删除了所有内容以尝试弄清楚发生了什么,但没有成功。
XML 布局
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/frame"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<VideoView
android:id="@+id/videoScreen"
android:layout_height="fill_parent"
android:layout_width="fill_parent" >
</VideoView>
<TextView
android:id="@+id/textScreen"
android:layout_width="300sp"
android:layout_height="fill_parent"
android:background="#80800000"
android:text="@string/hello_world"
android:lines="400" >
</TextView>
</FrameLayout>
简单的视频视图
final MediaController mediaController = new MediaController( getWindow().getContext() );
videoView = ( VideoView )findViewById( R.id.videoScreen );
mediaController.setAnchorView( videoView );
videoView.setMediaController( mediaController );
videoView.setVideoPath( "/mnt/extsd/test-movie.mov" );
videoView.start();
如果我理解正确,这应该会在正在运行的 VideoView 上产生一个红色、半透明的 TextView,但我似乎无法让它工作。
如果我删除 VideoView 并放置一个带有图片的 ImageView,透明度和背景颜色着色确实有效。我怀疑 TextView over VideoView 有什么不寻常的地方。
有没有人有任何建议我可能做错了什么?还是要检查的东西?
我有什么明显的遗漏吗?
一个使用 Color 背景颜色的 TextView 的简短示例。如果有人有,将不胜感激 VideoView 上的argb ( 128, 128, 0, 0 )。