我正在开发一个计算器应用程序,它具有纵向模式的相对布局.所有按钮和TextView都放置在这个单一的相对布局中,并且相同的相对布局用于Land模式.我已经挖掘了近15天的网络,但没有发现任何相关内容.我的应用程序也支持平板电脑.MinSDKVer为14,Target为v21.
目前我正在尝试这些Layouts文件夹
1:layout-sw400dp(用于Note 3和Mate 7)
2:layout-sw600dp(适用于7"平板电脑)
3:layout-sw720dp(用于8.9"和10"平板电脑)
4:布局小LDPI
5:布局正常LDPI
6:布局正常MDPI
7:layout-large-mdpi(适用于屏幕> 5"的480×800手机,如Pantech Sky Vega Note)
8:布局正常HDPI
9:layout-large-hdpi(适用于Galaxy Note 2,Galaxy Note和Galaxy Mega)
10:布局正常xhdpi
11:布局正常xxhdpi
12:layout-large-xxhdpi(适用于Galaxy Note 4)
13:layout-normal-xxxhdpi(适用于Nexus 6和其他QFHD手机)
所有这些布局都有陆地模式.
放置时出现问题(layout-sw400dp).Nexus 6,Note 4,Note 2,Galaxy Mega和Large 480×800手机开始使用这种布局而不是预期的布局.
发生这种情况是因为swdp的优先级高于layout-normal-xxxx或layout-large-xxxx.
注3和Mate 7是400dpi设备,这就是我放置layout-sw400dp的原因.在此之前,除了Note 3和Mate 7之外,所有设备都工作正常.
其他问题是具有540×960分辨率的设备.
我试过layout-320dp.通过使用此xhdpi设备和xxhdpi设备开始使用此布局.
我也试过这些布局为540×960但是这些甚至在为layout-long-port-800×480制作seprate文件夹后也无法工作.
1:布局h960dp-w540dp
2:布局长端口960×540
3:布局正常-960×540
我通过创建具有实际规格的不同设备从Android Virtual Device Manager中读取所有屏幕.
我尝试在java文件中手动设置540×960设备的布局并成功但我不想这样做,我也不想使用线性布局.
我已经彻底研究了"Android不同的屏幕支持和提供资源".
请告诉布局所有必需文件夹的名称,以支持所有Android设备或使用java执行此操作的任何其他有效方法.
我已经上传了Mediafire上的所有资源文件,你可以下载Calculator Layout.zip
任何建议和解决方案将不胜感激提前感谢
抱歉英语,因为它不是我的母语.
没有关于SO的问题解决了我的特殊问题.我对正则表达的了解很少.我正在使用Regex Class在Java中构建表达式解析器.我想从表达式中提取操作数,参数,运算符,符号和函数名称,然后保存到ArrayList.目前我正在使用这种逻辑
String string = "2!+atan2(3+9,2+3)-2*PI+3/3-9-12%3*sin(9-9)+(2+6/2)" //This is just for testing purpose later on it will be provided by user
List<String> res = new ArrayList<>();
Pattern pattern = Pattern.compile((\\Q^\\E|\\Q/\\E|\\Q-\\E|\\Q-\\E|\\Q+\\E|\\Q*\\E|\\Q)\\E|\\Q)\\E|\\Q(\\E|\\Q(\\E|\\Q%\\E|\\Q!\\E)) //This string was build in a function where operator names were provided. Its mean that user can add custom operators and custom functions
Matcher m = pattern.matcher(string);
int pos = 0;
while (m.find())
{
if (pos != m.start())
{
res.add(string.substring(pos, m.start()))
}
res.add(m.group())
pos = m.end();
}
if (pos != string.length()) …Run Code Online (Sandbox Code Playgroud)