小编Yha*_*oer的帖子

将SearchView与AppCompatActivity一起使用会导致UI故障

我正在尝试使用操作栏中的搜索按钮创建一个Android应用程序,当用户按下搜索按钮时,操作栏上会出现一个搜索文本框,就像Google的Messenger应用程序一样(见下文). 谷歌的Messenger与崩溃的搜索行动. Google的Messenger,扩展了搜索操作.

我试图实现它,如下所示,但我的应用程序看起来像这样: 我的应用有折叠搜索操作 我的应用扩展了搜索操作

这有一些问题.例如,文本用省略号读取"搜索...",不像没有省略号的简单"搜索",但到目前为止最关注的是,工具栏中没有后退按钮,搜索按钮被按下在左边太远,右边的溢出按钮被推到一边.此外,按下我的设备上的物理后退按钮不会折叠搜索视图,它只是存在于应用程序.

我过去尝试实现搜索栏的一些代码如下.我尝试设置SearchViewExpandListener如下所示,以便在展开搜索视图时显示后退按钮,但它不起作用.

编辑:我还在我onMenuItemActionExpandonMenuItemActionCollapsed方法上使用断点运行应用程序,我发现这些方法实际上从未调用过.

MainActivity.java

import android.content.Context;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowHomeEnabled(false);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);

        MenuItem searchItem = menu.findItem(R.id.action_search);
        SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
        // See above
        MenuItemCompat.setOnActionExpandListener(searchItem, new SearchViewExpandListener(this));
        MenuItemCompat.setActionView(searchItem, …
Run Code Online (Sandbox Code Playgroud)

user-interface android android-appcompat searchview

6
推荐指数
1
解决办法
2907
查看次数

从 Service Worker 创建沙盒窗口

我有一个 Chrome 扩展程序,它需要一个沙箱,以便我可以使用自定义内容安全策略,并且还需要一个 Service Worker,以便我有一个持久运行的脚本。我希望 Service Worker 打开一个新的(沙箱)窗口,然后能够使用postMessage.

我尝试了三种方法来创建此窗口,但没有一种方法对我有用:

  • 我尝试了chrome.windows.create哪个能够创建窗口,但我无法访问postMessage(或者至少我不知道如何以postMessage这种方式访问​​)。
  • 我尝试window.open返回一个WindowProxy我可以调用的对象postMessage。然而,这仅适用于window上下文可用的情况,而在 Service Worker 中并非如此。
  • 我尝试过clients.openWindow,但最终出现错误“不允许打开窗口”。

无论如何,有没有办法创建一个(沙盒)窗口,允许我postMessage在 Chrome 扩展中的 Service Worker 中使用?

postmessage sandbox google-chrome-extension service-worker

5
推荐指数
0
解决办法
663
查看次数

jQuery.load加载HTML文件

在此之前我从未使用过jQuery,但我会解释我正在尝试做什么.

的index.html

<!DOCTYPE html>
<html>
    <head>
        <title>My Awesome Website</title>
        <link href="style.css" rel="stylesheet" type="text/css"/>
        <link rel="shortcut icon" href="/favicon.ico" />
        <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    </head>
    <body>

<!--    <iframe width="100%" height="175" frameborder="0" scrolling="no" src="navbar.html"></iframe> I used to use this - but i cant have dropdown menus. -->
            <!-- This is my problem -->
        <script>
                $('#navbar').load('./navbar.html');
        </script>
        <noscript>
            <h1>Please enable Javascript!</h1>
        </noscript>

        <div id="container">
                <!-- Content Here -->
        </div>

    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

navbar.html

<div id="navbar">
        <li><object width="64" height="64" data="favicon.svg" type="image/svg+xml"></object></li>
        <li><object width="64" height="64" …
Run Code Online (Sandbox Code Playgroud)

html jquery navbar web

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