Android-多个NumberPicker值由外部总值限制
创始人
2024-08-19 18:00:09
0

使用NumberPicker的OnValueChangeListener接口来监测NumberPicker值的变化。在每次值变化时,更新其他NumberPicker的最大值和最小值,以确保它们的总和始终等于预设的总值。以下是一个示例实现:

public class MainActivity extends AppCompatActivity implements NumberPicker.OnValueChangeListener {
    private NumberPicker np1, np2, np3;
    private int totalValue = 100;

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

        np1 = findViewById(R.id.np1);
        np2 = findViewById(R.id.np2);
        np3 = findViewById(R.id.np3);

        np1.setOnValueChangedListener(this);
        np2.setOnValueChangedListener(this);
        np3.setOnValueChangedListener(this);

        np1.setMaxValue(totalValue);
        np2.setMaxValue(totalValue - np1.getValue());
        np3.setMaxValue(totalValue - np1.getValue() - np2.getValue());
    }

    @Override
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
        int newTotal = newVal + np2.getValue() + np3.getValue();
        int diff = totalValue - newTotal;

        if (diff < 0) {
            // The new value exceeds the total.
            picker.setValue(oldVal);
            return;
        }

        // Update the maximum values of the other NumberPickers.
        switch (picker.getId()) {
            case R.id.np1:
                np2.setMaxValue(diff);
                np3.setMaxValue(totalValue - newVal - np2.getValue());
                break;
            case R.id.np2:
                np1.setMaxValue(diff + newVal);
                np3.setMaxValue(totalValue - np1.getValue() - newVal);
                break;
            case R.id.np3:
                np1.setMaxValue(diff + newVal + np2.getValue());
                np2.setMaxValue(totalValue - np1.getValue() - newVal);
                break;
        }
    }
}

相关内容

热门资讯

透视总结!aapoker万能辅... 透视总结!aapoker万能辅助器(透视)aapoker透视怎么用,2025新版(有挂细节)1、完成...
透视app!wepoker私人... 透视app!wepoker私人局透视,wepoker买钻石有用吗(详细有透视);运wepoker买钻...
透视中牌率!aapoker俱乐... 透视中牌率!aapoker俱乐部靠谱吗(透视)aapoker怎么设置提高好牌几率,AA德州教程(有挂...
透视挂透视!we poker插... 透视挂透视!we poker插件,wepoker新号好一点吗(详细有透视底牌);1、实时wepoke...
透视真的!aapoker怎么拿... 透视真的!aapoker怎么拿好牌(透视)aapoker透视脚本入口,实用技巧(有挂解说);1、上手...
透视脚本!wejoker免费脚... 透视脚本!wejoker免费脚本,wejoker辅助软件价格(详细透视破解版)1)wejoker辅助...
透视好牌!aapoker插件(... 透视好牌!aapoker插件(透视)aapoker辅助工具安全吗,新2025教程(有挂攻略)1、完成...
透视神器!wepoker透视脚... 透视神器!wepoker透视脚本免费,wepoker辅助是真的吗(详细免费透视)一、wepoker辅...
透视透视挂!wepoker轻量... 透视透视挂!wepoker轻量版辅助,wepoker轻量版书签(详细私人局可以透视)1)wepoke...
透视讲解!aapoker透视脚... 透视讲解!aapoker透视脚本入口(透视)aapoker怎么设置抽水,透明教程(有挂工具)aapo...