小编MrE*_*r13的帖子

使用AppCompat-v7的工具栏和上下文ActionBar

我正在使用Lollipop和AppCompat-v7库中引入的新添加的工具栏.我按照本指南设置了工具栏我注意到当你调用一些会调出上下文ActionBar的内容(例如突出显示复制/粘贴的文本)时,它会将工具栏向下推到页面上.您可以在页面底部的图像中看到我在说什么:

所以,基本上,我这样设置它.我在xml文件中定义了工具栏,我使用包含标签:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"/>
Run Code Online (Sandbox Code Playgroud)

然后,我在我的视图中实例化它:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/root"
    tools:context=".MainActivity">

    <include
        layout="@layout/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/> 

    <!-- Rest of view -->

    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

在代码中,我这样设置:

    // On Create method of activity:
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)

有没有人知道怎么做才能让Contextual ActionBar超越工具栏?

工具栏和上下文ActionBar

android android-appcompat android-5.0-lollipop android-toolbar

179
推荐指数
5
解决办法
6万
查看次数

SDK Manager中的Android 4.4W(API20)和Android L(API20,L预览版)有什么区别?

我正在Eclipse中更新我的SDK Manager,并且有两个新的下载:

Android L(API20,L预览版)

Android 4.4W(API20)

我很困惑,因为它们都被称为"API 20".我不确定"4.4W"中的"W"是指什么.

eclipse android android-5.0-lollipop

60
推荐指数
2
解决办法
3万
查看次数

Google In-App结算,IllegalArgumentException:升级到Android L Dev预览后,服务意图必须明确

我的应用内结算代码工作正常,直到我升级到Android L Dev Preview.现在,当我的应用程序启动时出现此错误.有没有人知道L导致了什么变化或者我应该如何更改我的代码来解决这个问题?

android {
compileSdkVersion 'android-L'
buildToolsVersion '20'
defaultConfig {
    minSdkVersion 13
    targetSdkVersion 'L'
...
...


compile 'com.google.android.gms:play-services:5.+'
compile 'com.android.support:support-v13:21.+'
compile 'com.android.support:appcompat-v7:21.+'
...
...
Run Code Online (Sandbox Code Playgroud)

应用启动时的错误:

06-29 16:22:33.281    5719-5719/com.tbse.wnswfree D/AndroidRuntime? Shutting down VM
06-29 16:22:33.284    5719-5719/com.tbse.wnswfree E/AndroidRuntime? FATAL EXCEPTION: main
Process: com.tbse.wnswfree, PID: 5719
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tbse.wnswfree/com.tbse.wnswfree.InfoPanel}: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.android.vending.billing.InAppBillingService.BIND }
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2255)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2317)
        at android.app.ActivityThread.access$800(ActivityThread.java:143)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1258)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5070)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372) …
Run Code Online (Sandbox Code Playgroud)

android illegalargumentexception android-intent in-app-billing android-5.0-lollipop

56
推荐指数
3
解决办法
3万
查看次数

Toolbar.inflateMenu似乎什么都不做

我目前正忙着使用新的AppCompat库,为旧设备带来材料设计.

将工具栏设置为操作栏对我来说很好,但工具栏似乎在调用时没有做任何事情inflateMenu(int resId).从文档中,我认为这是替换getMenuInflater().inflate(int resId)来自onCreateOptionsMenu的调用.如果我做后者,菜单项正确膨胀并添加到工具栏,但inflateMenu似乎没有.

我错过了什么?

活动代码:

Toolbar toolbar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    toolbar.inflateMenu(R.menu.main); // this does nothing at all
    setSupportActionBar(toolbar);
}

// this works
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

android android-appcompat material-design android-toolbar

49
推荐指数
1
解决办法
2万
查看次数

项目目标(Android L(预览))未正确加载

最近我EclipseADT plugins一起升级了Android L priew.

我也有最新的Java更新,即Java 8.

我无法看到布局,它显示如下

在此输入图像描述

android android-layout android-5.0-lollipop

48
推荐指数
4
解决办法
3万
查看次数

使用Android L和Camera2 API处理相机预览图像数据

我正在开发一个Android应用程序,它正在处理来自摄像头的输入图像并将其显示给用户.这很简单,我PreviewCallback在相机对象上注册了一个setPreviewCallbackWithBuffer.这很简单,并且可以与旧的相机API一起使用

public void onPreviewFrame(byte[] data, Camera cam) {
    // custom image data processing
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试移植我的应用程序以利用新的Camera2 API,我不确定我该怎么做.我在L预览示例中使用了Camera2Video,可以录制视频.但是,样本中没有直接的图像数据传输,因此我不明白应该在何处获取图像像素数据以及如何处理它.

有人可以帮我或建议如何获得PreviewCallbackandroid L 的功能,或者如何在将其显示到屏幕之前处理相机的预览数据?(相机对象上没有预览回调)

谢谢!

camera android image-processing preview android-5.0-lollipop

39
推荐指数
4
解决办法
3万
查看次数

具有工具栏偏移内容的ActionMode

Ohoy.当我将我的应用程序升级到L时,我将ActionBars替换为工具栏,每当我启动ActionMode时,它都会推送所有内容.(我想这是因为再次显示ActionBar以显示ActionMode.)是否可以将ActionMode显示为叠加层,还是将其置于工具栏中?

也没有任何样式选项似乎适用于它,这让我想知道是否有一种新的方式来设计它.有任何想法吗?

即时通讯使用程序兼容性V7 21,到目前为止,我用尽windowActionModeOverlay=truetoolbar.startActionMode(..)

运行ActionMode的列表

android android-actionmode android-5.0-lollipop android-toolbar

27
推荐指数
1
解决办法
6497
查看次数

IllegalArgumentException:pointerIndex超出SwipeRefreshLayout的范围

我一直在IllegalArgumentException: pointerIndex out of range崩溃中得到一些崩溃,我不明白发生了什么.它不仅限于一个Android构建或设备,它发生在各种设备上的5.0.1,4.4.4,4.4.2,4.0.4,2.3.6.以下是更多上下文的完整日志输出.

java.lang.RuntimeException: Unable to destroy activity {com.mypackage.myapp/com.mypackage.myapp.MyListActivity}: java.lang.IllegalArgumentException: pointerIndex out of range
       at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3671)
       at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3689)
       at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3889)
       at android.app.ActivityThread.access$900(ActivityThread.java:144)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5221)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
Caused by: java.lang.IllegalArgumentException: pointerIndex out of range
       at android.view.MotionEvent.nativeGetAxisValue(MotionEvent.java)
       at android.view.MotionEvent.getY(MotionEvent.java:1998)
       at android.support.v4.view.MotionEventCompatEclair.getY(MotionEventCompatEclair.java:35)
       at android.support.v4.view.MotionEventCompat$EclairMotionEventVersionImpl.getY(MotionEventCompat.java:95)
       at android.support.v4.view.MotionEventCompat.getY(MotionEventCompat.java:228)
       at android.support.v4.widget.SwipeRefreshLayout.onTouchEvent(SwipeRefreshLayout.java:772)
       at android.view.View.dispatchTouchEvent(View.java:8388)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2398)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2158)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2400)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
       at android.view.ViewGroup.cancelTouchTarget(ViewGroup.java:2340)
       at android.view.ViewGroup.removeViewInternal(ViewGroup.java:4156)
       at android.view.ViewGroup.removeViewInternal(ViewGroup.java:4136)
       at android.view.ViewGroup.removeView(ViewGroup.java:4068)
       at …
Run Code Online (Sandbox Code Playgroud)

android android-support-library swiperefreshlayout

26
推荐指数
2
解决办法
1万
查看次数

Android Studio Instrumentation测试构建变体

所以我试图使用自定义构建变体mock来编写测试测试.在这个构建变体中,我模拟了我的类和服务器.当我尝试使用模拟构建时,它工作正常,但我似乎无法使用我的模拟构建进行测试.这是我在Android Studio中的配置.

构建变体

我有一些问题让我的测试运行所以我试图卸载我的应用程序的所有版本,除了我的模拟版本,我不断收到此错误:

测试运行startedTest运行失败:无法找到检测目标包:com.teamtreehouse.review.debug

但是,当我尝试针对调试版本变体运行我的测试时,它工作正常.它安装我的调试版本然后继续运行测试.

android-testing android-studio android-espresso android-instrumentation

22
推荐指数
3
解决办法
7168
查看次数

工具栏上的间隔均匀的菜单项

所以我一直在尝试android.support.v7.widget.Toolbar在我的Activity中实现它,使它看起来类似于以前支持的拆分ActionBar.

这是我的工具栏的XML:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar_btm"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    android:background="@color/toolbar_bkgnd"
    android:layout_alignParentBottom="true"
    app:theme="@style/ToolBarTheme" />
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的工具栏的样式:

<style name="ToolBarTheme" parent="Theme.AppCompat">
    <item name="actionButtonStyle">@style/ActionButtonStyle</item>
    <item name="android:actionButtonStyle">@style/ActionButtonStyle</item>
    <item name="android:textColor">@android:color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)

工具栏菜单按钮的样式,我的初步计划是minWidth根据屏幕大小计算,然后为每个菜单按钮设置它.

<style name="ActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton">
    <item name="android:minWidth">56dip</item>
    <item name="android:paddingLeft">0dip</item>
    <item name="android:paddingRight">0dip</item>
</style>
Run Code Online (Sandbox Code Playgroud)

最后,这是我在活动中所说的.

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_btm);
toolbarBtm.inflateMenu(R.id.menu);
Run Code Online (Sandbox Code Playgroud)

问题是底部的菜单项Toolbar是这样右对齐的: 右对齐的菜单项

但是我希望它们像这样均匀分布:

均匀分布的菜单项

android android-toolbar

21
推荐指数
2
解决办法
2万
查看次数