小编dok*_*ebi的帖子

部分屏幕WebView与<video>切成两半

我有一个具有拆分布局的平板电脑应用程序 - 左侧列表,右侧是详细信息窗格.右侧窗格是WebView,它包含一个<video>标记.这一切都运行正常,除了WebView的整个右侧被切断并呈现纯白色.

为什么它以这种方式呈现,如何在不插入大量黑客的情况下避免它?

我把它归结为一个简单的测试项目,我在github上发布这个项目.

这是一个截图:http://d.pr/i/dfEh.

左侧的灰色区域是列表视图所属的位置.FrameLayout为简单起见,我将其更改为空. 沿web视图的右侧的切断部IS相同的宽度列表视图. 同样值得注意的是,视频下方的任何内容也都被截断 - 白色区域扩展了WebView的整个高度.

我试过的一些事情:

  • 用其他东西替换列表视图
  • 启用和禁用WebSettings:javascript,使用宽视口,使用概览模式加载
  • 设置一个WebViewClient和一个WebChromeClient
  • 打开和关闭硬件加速
  • 在各种场合View.setScrollBarStyle,WebView.setVerticalScrollBarOverlay和类似
  • 调整<video>高度/宽度属性和样式
  • 各种视频格式,包括带有h264和aac,m3u8的mp4以及youtube rtsp流
  • 各种设备,包括Fire HD,Nexus 7,Galaxy 10.1和Xoom
  • Android版本3.1,3.2,4.0,4.1

目前的解决方法:

我最后通过使用全屏WebView,在我的列表顶部覆盖我的列表视图,并在html中最外层容器元素上设置左边距来解决这个问题.这是相当hacky,并在各种密度和分辨率上获得列表视图的大小是容易出错的,所以我真的想以正确的方式解决这个问题.

摘录:

正如我所提到的,在github上发布了一个(非)工作测试床,但这里有重要的部分:

Html加载到WebView中(这是全部):

<html>
<head><title>Title</title></head>
<body style="margin:0">
    <video x-webkit-airplay="allow" controls="controls" style="width:100%">
        <source src="http://clips.vorwaerts-gmbh.de/VfE_html5.mp4"></source>
    </video>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

主要布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <fragment android:name="com.concentricsky.android.webviewvideotest.ListFragment"
        android:id="@+id/item_list" …
Run Code Online (Sandbox Code Playgroud)

android android-webview html5-video

11
推荐指数
1
解决办法
3221
查看次数

PopupMenu PopupWindow $ PopupViewContainer泄漏

我有一个PopupMenu固定在Action Bar中的按钮,我正在获取有关泄漏窗口的日志输出.

如果我的活动在PopupMenu打开时停止,则会发生这种情况.

我在这里发布了一个相关问题,但我已经解决了这个问题.

我已经看到了一些类似的问题,像这样,但没有涉及到PopupMenu.

我想我是否可以处理上面提到的那些PopupWindow$PopupViewContainer我可以从WindowManageronPause或类似的东西中删除它,但我不知道如何得到它.暴露的界面PopupMenu非常有限.

  • 有没有人遇到过这个问题?
  • 有没有人修理它或解决它?
  • 任何人都知道如何获得PopupMenuView还是Window

这就是我创建菜单的方法:

// in Activity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    final MenuInflater inflater = getMenuInflater();

    inflater.inflate(R.menu.main_menu, menu);
    MenuItem login = menu.findItem(R.id.menu_login);
    final Button button = (Button) login.getActionView().findViewById(R.id.login);

    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View item) {
            if (profileMenu == null) {
                // I've tried passing getApplicationContext() here too, with …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks popupmenu

10
推荐指数
1
解决办法
6065
查看次数

Jackson 2.1多态反序列化:如何在pojo上填充类型字段?

我从REST服务中提取了一个类别和项目树.类别具有"子"属性,该属性包含类别和/或项目列表.它们的类型在"kind"字段中指定.

杰克逊的多态类型处理很棒,并且所有工作都按预期工作,除了一个小故障:"种类"字段本身没有填充.有没有一种简单的方法可以将这些数据输入pojos?我希望不必编写自定义反序列化器.

这是Category和Item的基类.这两个子类添加了几个标量字段,并不是很有趣.

@JsonIgnoreProperties(ignoreUnknown=true)
@JsonTypeInfo(  
    use = JsonTypeInfo.Id.NAME,  
    include = JsonTypeInfo.As.PROPERTY,  
    property = "kind",
    defaultImpl = EntityBase.Impl.class
    )
@JsonSubTypes({
    @Type(value = Item.class, name = "Item"),  
    @Type(value = Category.class, name = "Category")
    })  
public abstract class EntityBase {
    String title;
    String kind;

    public void setTitle(String title) { this.title = title; }
    public String getTitle() { return title; }

    public void setKind(String kind) { this.kind = kind; }
    public String getKind() { return kind; }

    public static class Impl extends EntityBase {} …
Run Code Online (Sandbox Code Playgroud)

java jackson

8
推荐指数
1
解决办法
4031
查看次数

PyXB和python框架

我使用PyXB从java/spring平台生成Python模块,该平台通过RESTfull API以XSD格式公开其类模式.

我现在能够使用那些PyXB绑定类/模块解析同一平台所服务的XML数据.

我的问题是:

  • 我如何在Django或金字塔等框架中利用这些类来构建动态模型表单,表格等,就像我使用来自models.py django ORM的模型,或通过漏勺/变形金字塔简单形式一样
  • 有没有人在任何这些框架中使用过PyXB类?

xml django schema binding pyramid

5
推荐指数
1
解决办法
1189
查看次数

Kindle Fire和Google Maps api

我们正在开发一个带有一些地图功能的应用程序

<uses-library android:name="com.google.android.maps" />
Run Code Online (Sandbox Code Playgroud)

在清单中.它在Xoom和Galaxy Tab以及几部手机上运行良好.它也适用于其中一个Google API模拟器.安装到Kindle Fire时,我们得到了

[2011-12-20 16:25:04 - android] Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
[2011-12-20 16:25:04 - android] Please check logcat output for more details.
[2011-12-20 16:25:04 - android] Launch canceled!
Run Code Online (Sandbox Code Playgroud)

E/PackageManager( 1385): Package <package> requires unavailable shared library com.google.android.maps; failing!
W/PackageManager( 1385): Package <package> couldn't be installed.
D/AndroidRuntime(12606): Shutting down VM
Run Code Online (Sandbox Code Playgroud)

这篇文章:https://stackoverflow.com/a/4509787/931277确认我开始怀疑的是,设备中确实缺少所需的api.

有没有办法将这个库包含在应用程序中,而不是依赖于它包含在设备上的Android版本中?

android google-maps kindle-fire

4
推荐指数
1
解决办法
2988
查看次数