我正在创建一个应用程序,我真的需要知道正确的屏幕尺寸.其实我知道怎么做......但是出现了一个问题,因为即使你这样做requestWindowFeature(Window.FEATURE_NO_TITLE);,这个:
仍然停留在屏幕上似乎,它也被视为屏幕的一部分,因此"screenWidth"实际上比可用部分更大.
是不是有任何方法如何获得可用部分的大小而不是整个屏幕?或者至少得到'滚动的东西'的大小(但是会有问题,有些设备没有显示它们)?
通常,人们希望根据用户的选择使用不同的值集.例如,取决于所选择的语言,根据所选择的主题说明相同事物的不同方式,或相同类型的不同颜色.我正在尝试做后者,所以我用相同的键但不同的值制作了几个JSON文件.这是'green_theme'JSON:
{
"darker_color": "#1a3300",
"lighter_color": "#4f9900",
"error_color": "#b42805"
}
Run Code Online (Sandbox Code Playgroud)
现在我希望组件从注入的服务中获取所需的颜色代码,如下所示:
<div [style.color]="themeService.getColorCodeByKey('darker_color')">example</div>
Run Code Online (Sandbox Code Playgroud)
这就是我尝试实现服务的方式:
@Injectable()
export class ThemeService {
private readonly RED_SKIN_SOURCE = "assets/themes/red_skin.json"
private readonly GREEN_SKIN_SOURCE = "assets/themes/green_skin.json"
private readonly YELLOW_SKIN_SOURCE = "assets/themes/green_skin.json"
public skinData: {[key: string]: string} = {};
constructor(private http:Http) {
this.setSkin(ThemeService.Skin.Green);
}
getColorCodeByKey(key: string): string {
return this.skinData[key];
}
public setSkin(skin: ThemeService.Skin) {
let observable: Observable<Response>;
switch(skin) {
case ThemeService.Skin.Red: {
observable = this.http.get(this.RED_SKIN_SOURCE);
break;
}
case ThemeService.Skin.Yellow: {
observable = this.http.get(this.YELLOW_SKIN_SOURCE);
break;
}
case ThemeService.Skin.Green: { …Run Code Online (Sandbox Code Playgroud)