小编use*_*023的帖子

Java8 在接口的默认方法中使用枚举值

我正在探索 java 8 中引入的静态和默认方法的可能性。

我有一个接口,它有 2 个默认方法来构造命令,我通过 ssh 在服务器上运行以远程执行一些简单的任务。移动鼠标需要 2 个参数:鼠标的 x 和 y 位置。

public interface Robot {

    default String moveMouse(int x, int y) {
        return constructCmd("java -jar move_mouse.jar " + x + " " + y);
    }

    default String clickLeft() {
        return  constructCmd("java -jar click_left.jar");
    }

    static String constructCmd(String cmd) {
        return "export DISPLAY=:1.0\n" +
                "cd Desktop\n" +
                cmd;
    }
} 
Run Code Online (Sandbox Code Playgroud)

我有多个带有预设值的枚举,我可以有效地将所有枚举组合成一个而不使用任何接口,但是该枚举将包含数百或数千个值,我想使其保持一定的井井有条,所以我已经拆分了所有在多个枚举中。

我希望所有枚举共享相同的方法,所以我想我会在接口中提供默认方法。

public enum Field implements Robot {

    AGE_FIELD(778, 232),

    NAME_FIELD(662, 280);

    public int x;
    public int …
Run Code Online (Sandbox Code Playgroud)

java enums interface java-8

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

BottomNavigationView清晰选择

我想清除BottomNavigationView的选择,因此不会选择任何项目.

我有一个辅助工具方法:

public static void clearSelection(BottomNavigationView view) {
    final BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
    for (int i = 0; i < menuView.getChildCount(); i++) {
        BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
        item.setChecked(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

这种工作方式,但不会将项目的颜色重置为未选中的项目(仅删除凸起的动画并规范化字体大小).

要设置BottomVanigationItemView颜色,我使用颜色选择器根据选中的状态设置颜色:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:state_checked="true"
        android:color="@color/colorPrimaryLight" />

    <item android:color="@color/colorPrimaryLightTransparent" />
</selector>
Run Code Online (Sandbox Code Playgroud)

我试过了:

item.invalidate();
menuView.invalidate();
Run Code Online (Sandbox Code Playgroud)

那没用.如何强制视图根据颜色选择器重置颜色值?

java android bottomnavigationview

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

从引导导航栏中删除活动类

我正在使用引导程序对导航栏进行编码,并且在导航栏的右侧添加了社交媒体链接,如果单击链接,则会在新窗口中打开它们。我想这样做,以便社交媒体链接在单击时不会活跃。

<ul class="nav navbar-nav navbar-right">
    <li id="facebook">
        <a href="#" target="_blank"><i class="fa fa-lg fa-facebook"></i></a>
    </li>  
    <li id="twitter">
        <a href="#"  target="_blank"><i class="fa fa-lg fa-twitter"></i></a>
    </li> 
    <li id "google-plus">
        <a href="#"  target="_blank"><i class="fa fa-lg fa-google-plus"></i></a>
    </li> 
</ul>
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的方法,但是它不起作用,我也不知道为什么?link1,将是该页面的默认活动链接。

<script>
    $(".nav li").click(function() {
        $(".nav li#link1").addClass('active');
        $(".nav li#facebook").removeClass('active');
        $(".nav li#twitter").removeClass('active');
        $(".nav li#google-plus").removeClass('active');
    });
</script>
Run Code Online (Sandbox Code Playgroud)

html javascript jquery twitter-bootstrap-3

0
推荐指数
1
解决办法
7009
查看次数