我看到这篇文章关于在Honeycomb上使用新的全息主题: 根据android版本更改主题
在我的应用程序,我的minSdkVersion = "11" 和targetSdkVersion = "11".默认情况下,我得到一个带有浅色文字的纯黑色背景.如果我明确设置Theme.Holo,在任的应用程序或活动,我仍然得到纯黑色,采用这样的:
机器人:主题= "@安卓风格/ Theme.Holo"
不过,我认为Theme.Holo使用渐变背景我在HoneycombGallery例子中看到的,设置这样的:
case R.id.toggleTheme:
if (mThemeId == android.R.style.Theme_Holo) {
mThemeId = android.R.style.Theme_Holo_Light;
} else {
mThemeId = android.R.style.Theme_Holo;
}
Run Code Online (Sandbox Code Playgroud)
如果这是真正的全息主题,我该如何获得它?
我有一个ListFragment取决于托管Activity正确初始化.在第一次运行时,它加载正常.一旦我更改了方向,我的应用程序崩溃了.从堆栈跟踪我可以看到它不是我试图Fragment过早添加,而是Android正在尝试恢复Fragment.
我已经setRetainInstance(false)在onStart方法中设置但是找不到任何方法来禁用Fragment一旦方向改变的恢复.有任何想法吗?我是否需要删除Fragment我的应用程序被销毁之前?
编辑:我最终推迟了初始化列表,直到活动准备就绪.在设置适配器之前,Android会方便地显示"加载"消息.
我有一个运送Android应用程序,显示资产文件夹中包含的偶尔静态网页.我一直在以编程方式显示这些:
webView = new WebView(PKBDocument.KnowledgeBook.KBContext);
setContentView(webView);
webView.loadUrl("file:///android_asset/path/to the/file.html");
Run Code Online (Sandbox Code Playgroud)
这适用于API级别3 - 9.我刚刚收到我的闪亮的新Xoom并尝试运行相同的应用程序,我收到一个错误
The webpage at file:///android_asset/path/to%20the/file.html might be temporarily down or it may have moved permanently to a new web address
所以,我开始尝试.Honeycomb仿真器显示这些页面很好,但我的实际蜂窝设备(运行3.0.1)始终显示此错误.我可以使用AssetManager读取网页,然后使用它来显示它loadDataWithBaseURL(),但是网页中的图像链接不会加载(可能是因为它无法找到图像文件的路径).
知道改变了什么,以及如何处理这个?
在3.0平板电脑的Gmail应用程序中,当我点击搜索按钮(在操作栏上)时,它会向右移动并占据整个操作栏.我怎样才能做到这一点?我能想到的唯一方法就是在单击搜索按钮时隐藏所有其他自定义操作栏字段.有没有更简单的方法?谢谢.
我正在为Honeycomb 3.0开发动态壁纸,但我收到一个随机错误.
当我在壁纸选择器(带有"设置壁纸"和"设置..."按钮的窗口,要理解)和动态壁纸时,如果我旋转设备,壁纸应重新加载,配置适应新的方向.有时会这样,有时会崩溃.
该错误在某种程度上与BaseSurfaceHolder.unlockCanvasAndPost方法有关,但我真的不知道是不是问题.我认为它无法正确加载一些资源..
这是错误日志:
07-21 16:07:38.490: WARN/WindowManager(292): java.lang.IllegalArgumentException: Requested window android.os.BinderProxy@40d19f28 does not exist
07-21 16:07:38.490: WARN/WindowManager(292): at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:6731)
07-21 16:07:38.490: WARN/WindowManager(292): at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:6722)
07-21 16:07:38.490: WARN/WindowManager(292): at com.android.server.wm.WindowManagerService.removeWindow(WindowManagerService.java:2414)
07-21 16:07:38.490: WARN/WindowManager(292): at com.android.server.wm.Session.remove(Session.java:149)
07-21 16:07:38.490: WARN/WindowManager(292): at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:120)
07-21 16:07:38.490: WARN/WindowManager(292): at com.android.server.wm.Session.onTransact(Session.java:111)
07-21 16:07:38.490: WARN/WindowManager(292): at android.os.Binder.execTransact(Binder.java:320)
07-21 16:07:38.490: WARN/WindowManager(292): at dalvik.system.NativeStart.run(Native Method)
07-21 16:07:38.490: ERROR/AndroidRuntime(20768): FATAL EXCEPTION: main
07-21 16:07:38.490: ERROR/AndroidRuntime(20768): java.lang.IllegalArgumentException
07-21 16:07:38.490: ERROR/AndroidRuntime(20768): at android.view.Surface.unlockCanvasAndPost(Native Method)
07-21 16:07:38.490: …Run Code Online (Sandbox Code Playgroud) 我在白色背景上放置一个CheckBox.它在预蜂窝设备上看起来很好,但在Honeycomb上,似乎图形具有部分透明度并且是白色的,因此当未选中复选框时,您无法看到它.
我尝试使用Theme.Holo.Light如下样式:
<CheckBox android:text="" style="@android:style/Theme.Holo.Light"
android:layout_marginLeft="5dip" android:id="@+id/checkBoxWifiOnly"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
这似乎没有效果.我错误地输入了语法吗?
我是第一次使用3.0.我想动态添加片段,但显示错误: -
10-18 18:29:11.215: ERROR/AndroidRuntime(3550): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
Run Code Online (Sandbox Code Playgroud)
XML代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frags">
<ListView
android:id="@+id/number_list"
android:layout_width="250dip"
android:layout_height="match_parent" />
<FrameLayout
android:id="@+id/the_frag"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)
活动
public class FragmentExampleActivity extends Activity implements
OnItemClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView l = (ListView) findViewById(R.id.number_list);
ArrayAdapter<String> numbers = new ArrayAdapter<String>(
getApplicationContext(), android.R.layout.simple_list_item_1, …Run Code Online (Sandbox Code Playgroud) 我需要在主页按钮上添加一个正确的填充ActionBar,我需要在选中它时更改其背景颜色.我可以使用我的标签执行这些操作,我添加了这些标签,实现了一种新风格,但我无法更改主页按钮的样式.有什么办法吗?
这是我实施的主题的来源:
<!-- style for the tabs -->
<style name="ActionBarTabStyle" parent="@android:style/Widget.Holo.Light.Tab">
<item name="android:background">@drawable/button_post</item>
<item name="android:paddingLeft">7dp</item>
<item name="android:paddingRight">7dp</item>
<item name="android:paddingBottom">10dp</item>
<item name="android:paddingTop">10dp</item>
</style>
<style name="ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">@color/button_post_default</item>
</style>
<style name="ActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton.Overflow">
<item name="android:background">@drawable/button_post</item>
</style>
<!-- Honeycomb theme -->
<style name="Theme.Honeycomb" parent="@android:style/Theme.Holo.Light">
<item name="android:windowNoTitle">false</item>
<item name="android:actionBarTabStyle">@style/ActionBarTabStyle</item>
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
<item name="android:selectableItemBackground">@drawable/button_post</item>
<item name="android:actionOverflowButtonStyle">@style/ActionButtonStyle</item>
</style>
Run Code Online (Sandbox Code Playgroud) 此代码使用位图的Alpha通道绘制单一颜色(带alpha)形状.
Bitmap alphaMask = bitmap.extractAlpha();
Paint paint = new Paint();
int color = Color.GRAY;
...
paint.setColor(color);
paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.DST_IN));
...
canvas.drawBitmap(alphaMask, x, y, paint);
Run Code Online (Sandbox Code Playgroud)
例如,它将采用左侧Bitmap并将其绘制到画布上,如右图所示:

但是,当打开硬件加速时,它不适用于Honeycomb(Android 3.0).无论如何,它都会将形状描绘成黑色.它忽略了颜色值.但是,它可以在ICS(Android 4.0)上运行硬件加速.
我知道硬件加速不支持某些API,正如Romain Guy在此处所述,在支持哪些绘图操作下?,但我似乎没有使用任何提到的不支持.
另外,听起来他说setColorFilter应该在这篇文章中工作.
我的代码中有什么东西在Honeycomb中不受支持吗?任何解决方法?在这种情况下,我希望保持硬件加速.
谢谢
看起来我有一个较小的问题,但无法找到原因.在我的SherlockFragmentActivity onCreate中,我执行以下操作:
@Override
public void onCreate(final Bundle savedInstanceState)
{
requestWindowFeature(Window.FEATURE_PROGRESS);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
super.onCreate(savedInstanceState);
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
Run Code Online (Sandbox Code Playgroud)
在加载一些数据的片段中,我做了一个简单的事情:
getSherlockActivity().setSupportProgressBarIndeterminateVisibility(true);
Run Code Online (Sandbox Code Playgroud)
所有在ICS上工作都很好,但在我的3.1平板电脑上运行的相同代码在请求时从不显示ProgressBar.任何人都可以给我一个提示,为什么会这样?
我在运行2.2的模拟器中也遇到了问题,没有显示进度.我再次查看Sherlock Samples中的FeatureToggles,相同的代码,不同的结果:/
PS:使用ActionBar Sherlock 4.01
android android-3.0-honeycomb actionbarsherlock android-actionbar progress-bar
android ×10
android-ui ×1
checkbox ×1
drawing ×1
java ×1
live ×1
orientation ×1
progress-bar ×1
search ×1
styles ×1
wallpaper ×1
webview ×1