CSSでスタイル化されたMultiButton
を押すと、ユーザーにフィードバックを与えたかっただけです。Codename OneのMultiButtonでスタイルを選択すると、スタックオーバーフローエラーが発生する
String newStyleName = "NewText";
Style newStyle = new Label("g", newStyleName).getUnselectedStyle();
String newSubStyleName = "NewSubText";
String newIconStyleName = "NewIcon";
MultiButton nameButton = new MultiButton("Name");
nameButton.setTextLine2("Give a name");
nameButton.setIcon(FontImage.createMaterial(FontImage.MATERIAL_TEXT_FIELDS, newStyle));
nameButton.setIconUIID(newIconStyleName);
nameButton.setUIIDLine1(newStyleName);
nameButton.setUIIDLine2(newSubStyleName);
this.add(nameButton);
そして、このようなスタイル:
MultiButton
がこのように使用しているユーザーにフィードバックを与えるために私の目標を達成するために
NewText {
color: #000000;
background-color: #e2f1f8;
text-align: left;
padding-left: 2mm;
padding-right: 2mm;
padding-top: 1mm;
padding-bottom: 1px;
margin-left: 0;
margin-right: 0;
margin-top: 0;
margin-bottom: 0;
font-family: "native:MainLight";
font-size: 4.2mm;
}
NewSubText {
cn1-derive: NewText;
padding-top: 0mm;
padding-bottom: 1mm;
margin-bottom: 0mm;
color: #b0bec5;
font-size: 3.5mm;
}
NewIcon {
cn1-derive: NewText;
padding-top: 1mm;
padding-bottom: 1mm;
padding-left: 2mm;
padding-right: 2mm;
background-color: #e2f1f8;
}
、私が追加しました:
NewText.pressed {
cn1-derive: NewText;
background-color: #808d94;
}
NewText.selected {
cn1-derive: "NewText.pressed";
}
を
しかし、これはシミュレータでエラーになります:
Error creating style NewText. selected: false prefix: press#[EDT] 0:1:2,42 - Error creating style NewText. selected: false prefix: press#
java.lang.StackOverflowErrorjava.lang.StackOverflowError
at com.codename1.io.Log.createWriter(Log.java:367)
at com.codename1.io.Log.getWriter(Log.java:384)
at com.codename1.io.Log.print(Log.java:348)
at com.codename1.io.Log.p(Log.java:284)
at com.codename1.io.Log.p(Log.java:274)
at com.codename1.ui.plaf.UIManager.getComponentStyleImpl(UIManager.java:356)
at com.codename1.ui.plaf.UIManager.createStyle(UIManager.java:1364)
at com.codename1.ui.plaf.UIManager.getComponentStyleImpl(UIManager.java:349)
at com.codename1.ui.plaf.UIManager.createStyle(UIManager.java:1364)
ボタンを押し続けると、最後に押した背景色になります。ところで
私はそれがコンパイルされません選択したスタイル(ノープレススタイル)を定義した場合:
java.lang.StackOverflowError
at com.codename1.ui.css.CSSTheme$Element.getFlattenedStyle(CSSTheme.java:2650)
だから、このスタックオーバーフローエラーの原因となったスタイル間の循環依存関係の問題があるように見えますが、私where:NewText
セレクタスタイルが完全に定義されています。
false prefix press#
の意味は何ですか。このエラーを取り除くにはどうすればよいですか?事前に
おかげで、
この小さなヘルパーライブラリhttps://github.com/diamonddevgroup/cn1-helperを試してみたことがありますが、これは私にとってとても便利でCSSよりも使いやすくなっています。ほとんどの場合、コード内のスタイリングを1行で行うことができます。 – Diamond
このヘルパーを私の知識に持ってくれてありがとうダイヤモンド。私は私が個人的に好むCSSの方法にこだわっているならば、私はそれを試してみましょう。 – HelloWorld