我有两个主题,一个黑暗和一个明亮的主题。我想获取当前主题背景颜色并在如下布局文件中使用它:
function getImage(){
var imgSrc = window.URL.createObjectURL(this.files[0]);
getImgSize(imgSrc,useImgSize);
}
function getImgSize(src,fn){
var img=new Image();
img.onload=function(){
fn({width:img.width,height:img.height});
}
img.src=src;
}
function useImgSize(dimensions){
alert(dimensions.width);
alert(dimensions.height);
}
让我们说<View
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="(backgroundColor)" />
是当前主题背景颜色。我需要放在哪里而不是(backgroundColor)
?
答案 0 :(得分:1)
使用android:theme
<View
android:theme="@style/yourTheme"
android:layout_width="match_parent"
android:layout_height="match_parent" />
并在您的values \ styles.xml
中 <style name="yourTheme" parent="AppTheme">
<item name="android:background">@color/green</item>
</style>
修改:请尝试在第一时间发布您的完整问题,如果您进行了更改,请尝试在编辑部分下添加。那些喜欢帮助你的人会遇到麻烦。
对于已修改的问题,我们已经回答here
您可以从当前主题中获取背景颜色(或Drawable) 由:
TypedValue a = new TypedValue(); getTheme().resolveAttribute(android.R.attr.windowBackground, a, true); if (a.type >= TypedValue.TYPE_FIRST_COLOR_INT && a.type <= TypedValue.TYPE_LAST_COLOR_INT) { // windowBackground is a color int color = a.data; } else { // windowBackground is not a color, probably a drawable Drawable d = activity.getResources().getDrawable(a.resourceId); }
并将其设置为您的视图!
答案 1 :(得分:1)
您问题的正确答案可能是?android:colorBackground
。但您可能仍希望在某些情况下使用?android:windowBackground
。
虽然windowBackground
将成为您活动的背景,但colorBackground
似乎是您内容的默认背景颜色。
在你的情况下,你最终会像下面这样:
<View
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?android:colorBackground" />
有关这些“默认”主题属性的完整列表,您可以查看基本Android themes.xml
的源代码