我正在尝试Theme.AppCompat.Light.DarkActionBar使用新的支持库工具栏重新创建外观.
如果我选择Theme.AppCompat.Light我的工具栏会很轻,如果我选择Theme.AppCompat它会很暗.(从技术上讲,你必须使用该.NoActionBar版本,但据我所知,唯一的区别是
<style name="Theme.AppCompat.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)
现在已经没有Theme.AppCompat.Light.DarkActionBar天真了,我认为只做自己的就好了
<style name="Theme.AppCompat.Light.DarkActionBar.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)
然而,有了这个,我的工具栏仍然是Light主题.我花了几个小时现在尝试混合Dark(基础)主题和Light主题的不同组合,但我找不到一个组合,让我在除工具栏之外的所有东西上都有浅色背景.
有没有办法让AppCompat.Light.DarkActionBar导入的外观android.support.v7.widget.Toolbar?
我提到了这个链接.在如果上的EditText用户点击(为前要:)在那个时候键盘会被弹出,并在同一时间,用户可以可以滚动查看所有剩余的视图(例如:撰写,主题,发送按钮),那个屏幕.同样在我的应用程序中,我有一个活动,我有一些小部件或视图.假设用户点击我的Activity中的Edittext然后键盘弹出,我可以滚动查看剩余的视图.但是如果我android:theme="@android:style/Theme.NoTitleBar.Fullscreen"在清单中给出这个属性我无法滚动查看剩余的视图但是如果android:theme="@android:style/Theme.NoTitleBar"在清单中给出这样的属性我可以滚动查看剩余视图但是在该屏幕中有状态栏,这里我想要全屏和即使弹出键盘,我也可以滚动查看剩余的视图..?我必须为此做些什么改变..?
考虑一下:
styles.xml
<style name="BlueTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="theme_color">@color/theme_color_blue</item>
</style>
Run Code Online (Sandbox Code Playgroud)
attrs.xml
<attr name="theme_color" format="reference" />
Run Code Online (Sandbox Code Playgroud)
color.xml
<color name="theme_color_blue">#ff0071d3</color>
Run Code Online (Sandbox Code Playgroud)
所以主题颜色由主题引用.如何以编程方式获取theme_color(引用)?通常我会使用getResources().getColor()但不是在这种情况下,因为它被引用!
我正在尝试使用以下代码将文本居中ActionBar,但它将自己对齐到左侧.
你如何让它出现在中心?
ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setTitle("Canteen Home");
actionBar.setHomeButtonEnabled(true);
actionBar.setIcon(R.drawable.back);
Run Code Online (Sandbox Code Playgroud) 我想为我的应用程序提供2个可选主题.为了做到这一点,我定义了一些属性,如下所示:
<attr format="color" name="item_background" />
Run Code Online (Sandbox Code Playgroud)
然后,我创建了两个主题,如下所示:
<style name="ThemeA">
<item name="item_background">#123456</item>
</style>
<style name="ThemeB">
<item name="item_background">#ABCDEF</item>
</style>
Run Code Online (Sandbox Code Playgroud)
这种方法效果很好,允许我轻松地创建和修改几个主题.问题是它似乎只能在Views中使用,而不能在Drawables中使用.
例如,引用布局内View的值可以:
<TextView android:background="?item_background" />
Run Code Online (Sandbox Code Playgroud)
但是在Drawable中做同样的事情并不是:
<shape android:shape="rectangle">
<solid android:color="?item_background" />
</shape>
Run Code Online (Sandbox Code Playgroud)
运行应用程序时出现此错误:
java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
Run Code Online (Sandbox Code Playgroud)
如果不是?item_background我使用硬编码颜色,它可以工作,但这不允许我使用我的主题.我也试过?attr:item_background,但同样的事情发生了.
我怎么能这样做?为什么它在Views中有效但在Drawables中无效?我在文档中的任何地方都找不到这个限制......
我正在查看Honeycomb Gallery示例代码(此处),并在尝试在我自己的应用程序中添加操作项时遇到以下代码:
<item android:id="@+id/camera"
android:title="Camera"
android:icon="?attr/menuIconCamera"
android:showAsAction="ifRoom" />
Run Code Online (Sandbox Code Playgroud)
这?attr让我陷入了困境.有人可以解释一下这是做什么的吗?这与抽象有什么关系?我似乎无法在Google上找到任何有用的信息.还有一个列表或属性库我们可以用于图标,而不仅仅是menuIconCamera?
谢谢
编辑:我做了一些调查,发现attrs.xml看起来像这样:
<resources>
<declare-styleable name="AppTheme">
<attr name="listDragShadowBackground" format="reference" />
<attr name="menuIconCamera" format="reference" />
<attr name="menuIconToggle" format="reference" />
<attr name="menuIconShare" format="reference" />
</declare-styleable>
Run Code Online (Sandbox Code Playgroud)
不幸的是,这让我更加困惑.这是做什么的?
在Android中,我在模拟器和某些移动设备中遇到以下错误但在平板电脑中没有:
我无法理解实际上是什么错误?
我搜索了很多教程,但找不到任何解决方案.
请帮我解决这个问题.
注意:在这个应用程序中,我使用了ActionbarSherlock和主题,可能是因为该库或任何其他问题?
我的错误日志是:
09-11 17:52:57.342: E/AndroidRuntime(9935): FATAL EXCEPTION: main
09-11 17:52:57.342: E/AndroidRuntime(9935): android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
09-11 17:52:57.342: E/AndroidRuntime(9935): at android.view.LayoutInflater.createView(LayoutInflater.java:613)
09-11 17:52:57.342: E/AndroidRuntime(9935): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
09-11 17:52:57.342: E/AndroidRuntime(9935): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660)
09-11 17:52:57.342: E/AndroidRuntime(9935): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
09-11 17:52:57.342: E/AndroidRuntime(9935): at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
09-11 17:52:57.342: E/AndroidRuntime(9935): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
09-11 17:52:57.342: E/AndroidRuntime(9935): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:371)
09-11 17:52:57.342: E/AndroidRuntime(9935): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
09-11 17:52:57.342: E/AndroidRuntime(9935): at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:193)
09-11 17:52:57.342: …Run Code Online (Sandbox Code Playgroud) android android-emulator android-layout android-theme actionbarsherlock
我为我们在整个应用程序中广泛使用的控件编写了一个自定义小部件.widget类ImageButton以几种简单的方式派生和扩展它.我已经定义了一个可以应用于小部件的样式,但是我更喜欢通过主题来设置它.在R.styleable我看到小部件样式属性,如imageButtonStyle和textViewStyle.有没有办法为我写的自定义小部件创建类似的东西?
我将举一个例子来证明更重要的一点.
想象一下,我的应用程序有许多FloatingActionButtons.因此,我想创建一种样式并重用它.所以我做了以下事情:
<style name="FabStyle” parent ="Widget.Design.FloatingActionButton">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_margin">16dp</item>
<item name="app:backgroundTint">@color/accent</item>
<item name="app:layout_anchorGravity">end|bottom</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是代码没有编译,因为它抱怨
Error:(40, 5) No resource found that matches the given name: attr 'app:backgroundTint'.
Run Code Online (Sandbox Code Playgroud)
我尝试通过resources标记引入命名空间,但这不起作用
<resources
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
>
Run Code Online (Sandbox Code Playgroud)
有什么想法我可以让它工作?
我想Holo.Light在支持它的设备上使用主题,然后回到Light其他设备上的常规主题.
目前,引用Holo.Light在3.0+上工作正常,但较旧的API只是恢复到默认的"黑暗"主题.我可以通过样式继承来实现我想要的吗?
android android-theme android-3.0-honeycomb android-4.0-ice-cream-sandwich