删除Android应用程序周围的绿色边框

时间:2018-03-13 12:21:50

标签: android css cordova

我目前遇到的问题是使用Cordova构建的Android应用程序在应用程序主体周围有绿框:

Green border issue

这似乎是由于网络容器处于焦点,因为当显示警报时绿色轮廓消失。

此绿色边框不会出现在iOS版本的应用程序中,也不会出现在浏览器中或使用chrome://inspect检查模拟器框架时。

我尝试过多次修复CSS以尝试删除此边框,例如:

* {
  -webkit-tap-highlight-color: transparent !important;
  outline: none !important;
  border: 0px solid #000;
}

除了禁用设备上的所有辅助功能设置外,也无济于事。

其他详情:

  • Android SDK版本:27
  • 测试的设备:Nexus 5,Nexus 6,Pixel XL
  • Cordova版本:3.6.4(由于使用MobileFirst的当前框架要求而无法更改)

有谁知道如何解决这个问题?

4 个答案:

答案 0 :(得分:5)

我能够通过在init下的CordovaWebView Java类的CordovaLib/src/org/apache/cordova/方法中添加以下行来解决此问题:

this.setDefaultFocusHighlightEnabled(false);

答案 1 :(得分:1)

在您的

  

Android / App / src / main / res / values / styles.xml

添加此项目,在样式标签内

public ArrayList<MidiDevice> getTransmitterDevices() {
    MidiDevice.Info[] deviceInfo = MidiSystem.getMidiDeviceInfo();

    ArrayList<MidiDevice> transmitterDevices = new ArrayList<>();
        for(int i=0;i<deviceInfo.length;i++) {
            try {
                MidiDevice device = MidiSystem.getMidiDevice(deviceInfo[i]);
                if(device.getMaxTransmitters()!=0) {
                    transmitterDevices.add(device);
                }
            } catch (MidiUnavailableException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    return transmitterDevices;
}
//Somewhere else 
//choose appropriate info somehow
MidiDevices<ArrayList> transmitterDevices = getTransmitterDevices();
    for(MidiDevice tmp : transmitterDevices) {
        if(tmp.getDeviceInfo().equals(info)) {
            try {
                midiController = tmp;
                Transmitter transmitter = midiController.getTransmitter();
                // something that implements receiver
                midiReceiver = new MidiReceiver(); 
                transmitter.setReceiver(midiReceiver);
                midiController.open();
                System.out.println("controller set ok");
            } catch (MidiUnavailableException e) {
                // TODO Auto-generated catch block
                    e.printStackTrace();
            }
       }
}

答案 2 :(得分:0)

这是因为sInTouchMode:在cordova webview中为true(特定于Oreo)

解决方案:

转到 - CordovaLib / src / org / apache / cordova / CordovaActivity.java

查找 - appView.getView()。requestFocusFromTouch();

用 -

替换上面的行

if(Build.VERSION.SDK_INT&lt; 26){

appView.getView().requestFocusFromTouch();

}

答案 3 :(得分:0)

  1. 删除android平台

  2. 添加此项

<item name="android:defaultFocusHighlightEnabled">false</item>

在下面的两个文件中

\node_modules\cordova-android\spec\fixtures\android_studio_project\app\src\main\res\values\styles.xml

\node_modules\cordova-android\test\app\src\main\res\values\styles.xml
  1. 添加android平台