osfans / trime

同文安卓輸入法平臺3.x/Android-rime/Rime Input Method Engine for Android
http://osfans.github.io/trime/
GNU General Public License v3.0
3.19k stars 375 forks source link

不写 `keyboard_height` 参数时液态键盘不显示 #1316

Open Wenti-D opened 8 months ago

Wenti-D commented 8 months ago

Describe the bug 若主题文件中 style 下没有 keyboard_height 一行,调用液态键盘时它不会显示出来(可能看起来像高度为 0)

To Reproduce

  1. tongwenfeng.trime.yaml 第 82 行 keyboard_height: 250 注释掉;
  2. 重新载入主题;
  3. 调用剪贴板;
  4. BOOM。

Expected behavior 在之前一段时间,未指定 keyboard_height 不影响液态键盘显示,看起来有一个「默认高度」什么的。

Log com.osfans.trime-2024-03-29T07_07_12Z.txt

Screenshots (这是使用同文风主题测试的结果,把整个手机屏幕全截下来了)

Smartphone (please complete the following information):

shitlime commented 8 months ago

液态键盘高度为0,这个bug确实是有的

Additional context 顺便问问,这不 3.2.18 的测试版吗,怎么构建出来的版本有时还挂着 3.2.17 呢?

构建出来的版本 3.2.17 可能是因为你clone后编译,可以检查git tag。

Wenti-D commented 8 months ago

构建出来的版本 3.2.17 可能是因为你clone后编译,可以检查git tag。

好了,现在成 nightly 了。

goofyz commented 7 months ago

現在 liquid keyboard 會將高度設定為 keyboard_height

你是有什麼原因不想寫 keyboard_height 嗎?

Wenti-D commented 7 months ago

因为我主题的不同键盘本身就高度不一,如果指定 keyboard_height 会让键高不一致。

eric1ee commented 7 months ago

現在 liquid keyboard 會將高度設定為 keyboard_height

你是有什麼原因不想寫 keyboard_height 嗎?

现在最新的版本keyboard_height似乎是不起作用呀,设置了高度,切换键盘还是有闪烁 screenshots

goofyz commented 7 months ago

現在 liquid keyboard 會將高度設定為 keyboard_height。 你是有什麼原因不想寫 keyboard_height 嗎?

现在最新的版本keyboard_height似乎是不起作用呀,设置了高度,切换键盘还是有闪烁 screenshots screenshots

這是另一問題( #1250 ),我正在修正。

goofyz commented 7 months ago

因为我主题的不同键盘本身就高度不一,如果指定 keyboard_height 会让键高不一致。

你為了令每個鍵高一致,而放棄了鍵盤高度的一致? 那麼你希望 liquid keyboard 的高度是什麼?

Wenti-D commented 7 months ago

你為了令每個鍵高一致,而放棄了鍵盤高度的一致?

差不多,以前用 Gboard 就是键盘高度固定而键高会有变化,个人感觉难受。

那麼你希望 liquid keyboard 的高度是什麼?

一些想法:

shitlime commented 7 months ago

当前liquid keyboard的高度是由height(按键高度)控制的,与普通的keyboard一样。 个人认为这个设计已经出现了一些问题:

  1. 按键高度(liquid_keyboard/height keyboard/height)不能直观反映整个键盘的高度。
  2. 键盘高度(style/keyboard_height)在正常工作的情况下,是锁定全局键盘高度的,可以很直观反映整个键盘的高度,但部分键盘有自定义高度的需求,比如中文键盘4排按键、英文键盘5排按键(多一排数字键),这时候就希望英文键盘高一点。

我认为可以:

  1. 在键盘高度(style/keyboard_height)的同级增加一个配置项,来决定是否锁定全局键盘高度,而键盘高度(style/keyboard_height)只用来指定键盘的缺省高度。
  2. 在所有键盘中添加一个参数(如liquid_keyboard/keyboard_height keyboard/keyboard_height)用来设定该键盘的高度。
  3. 对按键高度(liquid_keyboard/height keyboard/height)参数的作用进行重新定义,向按键宽度看齐,数值也就是占整个键盘高度的百分比。如:height: 10 表示占键盘高度的10%,这与 width: 10 表示占整个键盘宽度10%类似。
goofyz commented 7 months ago

当前liquid keyboard的高度是由height(按键高度)控制的,与普通的keyboard一样。 个人认为这个设计已经出现了一些问题:

1. 按键高度(`liquid_keyboard/height` `keyboard/height`)不能直观反映整个键盘的高度。

2. 键盘高度(`style/keyboard_height`)在正常工作的情况下,是锁定全局键盘高度的,可以很直观反映整个键盘的高度,但部分键盘有自定义高度的需求,比如中文键盘4排按键、英文键盘5排按键(多一排数字键),这时候就希望英文键盘高一点。

我认为可以:

1. 在键盘高度(`style/keyboard_height`)的同级增加一个配置项,来决定是否锁定全局键盘高度,而键盘高度(`style/keyboard_height`)只用来指定键盘的缺省高度。

2. 在所有键盘中添加一个参数(如`liquid_keyboard/keyboard_height` `keyboard/keyboard_height`)用来设定该键盘的高度。

3. 对按键高度(`liquid_keyboard/height` `keyboard/height`)参数的作用进行重新定义,向按键宽度看齐,数值也就是占整个键盘高度的百分比。如:`height: 10` 表示占键盘高度的10%,这与 `width: 10` 表示占整个键盘宽度10%类似。

參考你的建議,我覺得可以:

WhiredPlanck commented 7 months ago

@Wenti-D 这其实符合预期。因为液态键盘一直是和主键盘同样高度的,以前没有显式地表现出来。技术上来说,液态键盘曾经和主键盘同住一个“屋檐下”,主键盘多高,液态键盘就有多高。而现在分离开了,为了保持它们大部分时候能够同高,液态键盘直接取回了 keyboard_height 作为自己的高度,所以如果你没有这个参数,当然是显示不出来的。

Wenti-D commented 7 months ago

因为液态键盘一直是和主键盘同样高度的,以前没有显式地表现出来。

那也就是说之前的液态键盘高度是当前输入法目标键盘的高度?有点接近「设定为切换前键盘的高度」。

WhiredPlanck commented 7 months ago

因为液态键盘一直是和主键盘同样高度的,以前没有显式地表现出来。

那也就是说之前的液态键盘高度是当前输入法目标键盘的高度?有点接近「设定为切换前键盘的高度」。

应是如此。不过我得承认这部分目前的实现并不是很好。

atlanticfirst commented 6 months ago

刚刚更新到f-droid最新版也遇到了这个问题,通过添加keyboard_height显示出来了,太感谢了

WhiredPlanck commented 1 week ago

@Wenti-D 之前解释得不是很清楚,最近修了一些问题后想把现状再说一下:

  1. 主题里的任一键盘高度参数是直接设定给主键盘(窗口)的,其他的窗口视图(比如液态键盘、卷轴候选)都会自动跟随这个高度设置
  2. 输入法在获取键盘高度设定时,先取键盘定义里设定的,如果没有设定或者等于 0,则取主题中的 style/keyboard_height(不管是不是没设或者等于 0)
  3. 基于上述两点,主题里必须保证键盘定义中或者主题中至少有一个地方有高度设置。如果都没有,就会什么都显示不出来。
  4. 整体的视图高度是栏高 + 键盘高(candidate_view_height + comment_height + keyboard_height
Wenti-D commented 1 week ago

那问题来了,主题有一个设置项是默认键高(key_height),键盘定义中也可以写参数 height 来覆盖默认键高,如果现状如你所说,那这个参数不是完全没用了吗……

WhiredPlanck commented 1 week ago

那问题来了,主题有一个设置项是默认键高(key_height),键盘定义中也可以写参数 height 来覆盖默认键高,如果现状如你所说,那这个参数不是完全没用了吗……

当然不是这样。这只是让键盘定义中的参数优先生效,如果没写或者为 0,才用主题样式设定里的。

Wenti-D commented 1 week ago

呃,可能我表述不清了。我是想说,style/keyboard_height 决定了键盘高度,那么,现在的情况下 key_heightheight 参数是不是就不起效了?

在有键盘高度这个参数的情况下,键高应该会由键盘高度和行数计算而来。而现在你说「至少有一个地方有高度设置」,也就是必须存在键盘高度这一参数,所以 key_height 参数没法起效。

另外我试了,在键盘中设定了 height 参数,的确无效,仍然是「整体键盘高度不变,键高由整体键盘高度和行数计算而来」。但在键中设定高度 height 则对那一行有效。