我目前正在尝试使用“@intlify/vite-plugin-vue-i18n”国际化我的 vue 3 vite 项目。我在这里面临的问题是,我目前必须为每个组件导入并设置 t 变量才能使用它。
示例组件:
<template>
t('translation')
</template>
<script>
import { useI18n } from 'vue-i18n'
export default {
setup(){
const {t} = useI18n();
return {t}
},
};
</script>
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果可能的话,使变量“t”全局化的最佳方法是什么?我找不到任何关于此的示例/帮助,因为它们都将其导入到每个组件中。所有帮助将不胜感激!:) 作为参考,这里是相关文件。
export default defineConfig({
plugins: [
vue(),
vueI18n({
include: path.resolve(__dirname, './src/locales/**')
})
]
})
Run Code Online (Sandbox Code Playgroud)
主要.ts:
import i18n from './i18n';
const app = createApp(App);
app.use(i18n);
app.mount("#app");
Run Code Online (Sandbox Code Playgroud)
i18n.js:
import { createI18n } from 'vue-i18n'
import messages from '@intlify/vite-plugin-vue-i18n/messages'
export default createI18n({
legacy: false,
locale: 'no',
messages
})
Run Code Online (Sandbox Code Playgroud) 不同的 Android 设备有不同的主题。这意味着,背景颜色(如对话框中的颜色)可能因 Android 版本和制造商而异。
这可能会导致图标变得“不可见”:

通过在目标特定文件夹中提供不同颜色的图标,例如在文件夹中提供白色图标drawable-v14,在drawable-v10. 但这并不能解决制造商定制主题(可能是 TouchWiz、Blur 或 Sense)带来的问题。通过这种方法根本不可能覆盖所有设备。
另一种方法是在白色图标周围绘制一个小的黑色边框,反之亦然。但如果背景是灰色的,就像 ICS 中那样,它看起来也不会很好。
所以,问题是:如何提供自定义图标,使其在每个主题上都能很好地工作,而不触及主题本身?
我有一个关于在a中使用引用的问题layer-list drawable.
我想在我的应用程序中使用自定义按钮layer-list.
btn.xml按钮的最终绘制,由以下部分组成selector:<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/btn_normal"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
btn_pressed看起来像这样:<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
<solid android:color="?custom_color" />
</shape>
</item>
<item android:drawable="@drawable/btn_normal"/>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
关键部分是线,我声明颜色作为参考custom_color,我定义如下.
<resources>
<attr name="custom_color" format="reference|color" />
</resources>
Run Code Online (Sandbox Code Playgroud)
<resources>
<style name="MyTheme" parent="android:Theme.Light.NoTitleBar">
<item name="custom_color">#ff33b5e5</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
Eclipse根本没有给我任何错误,它编译得很好.但是当我在我的ICS Nexus S或仿真器(无论是什么版本)上启动应用程序时,它会崩溃.Logcat指出以下内容:
03-23 14:33:38.832:E/AndroidRuntime(636):引起:android.content.res.Resources $ NotFoundException:来自可绘制资源ID的文件res/drawable/btn.xml#0x7f020006
[...]
03-23 14:33:38.832:E/AndroidRuntime(636):引起:android.content.res.Resources $ NotFoundException:来自可绘制资源ID的文件res/drawable/btn_pressed.xml#0x7f020009
如果我注释掉,中的shape元素layer-list,或设置硬编码的颜色,一切正常.因此,在图层列表中引用属性似乎存在问题.
那么,有没有人知道这个问题的解决方案?我想根据我的应用程序使用的主题更改该图层列表中的颜色.
我当前的项目使用一些ListFragments来显示数据行.行每隔几秒动态更新一次.行数随每次更新而变化ListFragment.
我想向用户显示行数,并认为它的最佳位置Fragment是ViewPagerIndicator中的标题旁边.我提供了一个示例图像以便更好地理解:

可悲的是,我对如何实现这一目标毫无头绪.我尝试了以下方法:
public class PagerAdapter extends FragmentPagerAdapter {
private int numOne = 0;
private int numTwo = 0;
// ...
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "List 1 (" + numOne + ")";
case 1:
return "List 2 (" + numTwo + ")";
default:
return "";
}
public void setNumOne(int num) {
this.numOne = num;
}
public void setNumTwo(int num) {
this.numTwo = …Run Code Online (Sandbox Code Playgroud) 我正在尝试用Google的gson库解析json数据.但是json数据表现不佳.
当一切顺利时,它看起来像这样:
{
"parent": {
"child_one": "some String",
"child_two": "4711",
...
}
}
Run Code Online (Sandbox Code Playgroud)
child_one应该解析为String,child_twoas int.但有时候其中一个孩子没有导致空对象的值,而不是null像这样:
{
"parent": {
"child_one": "some String",
"child_two": {},
...
}
}
Run Code Online (Sandbox Code Playgroud)
我没有权限改变json feed,因此我必须在反序列化期间处理它.但我迷失在这里.如果我只是让它解析第二个案例给我一个JsonSyntaxException.
我想过使用自定义JsonDeserializer.有没有像检查每个元素一样的东西JsonObject,如果它是,如果它是,检查是否entrySet.isEmpty().如果是,请删除该元素.
但我不知道如何完成迭代......