小编ari*_*ets的帖子

使用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万
查看次数

与adb的连接已关闭,并且发生了严重错误

可能重复:
与adb的连接已关闭,并且发生了严重错误

我目前正在尝试在最新版本的Eclipse中开发Android应用程序.当我尝试构建和运行时,会出现以下内容:

[2011-02-17 17:08:03 - <ProgramName>] The connection to adb is down, and a severe error has occured.
[2011-02-17 17:08:03 - <ProgramName>] You must restart adb and Eclipse.
[2011-02-17 17:08:03 - <ProgramName>] Please ensure that adb is correctly located at 'C:\<sdk-directory>s\platform-tools\adb.exe' and can be executed.
Run Code Online (Sandbox Code Playgroud)

现在,我已经更新了ADT插件,我有最新版本的Android SDK; 实际上,adb.exe位于platform-tools目录中并且可以执行.我尝试过在Google上找到的所有内容:

  • 我试过adb kill-server和adb start-server
  • 我尝试在没有启动模拟器的情况下运行它
  • 我在PATH中有给定的目录(我尝试了路径中的平台工具,我尝试在我的PATH中同时使用平台工具和工具).

注意:我正在运行Windows 7.此外,我之前在Eclipse中测试过应用程序.自升级SDK以来,此错误对我来说是新的.

eclipse android adt adb

64
推荐指数
5
解决办法
10万
查看次数

"在'android'包中找不到属性'showAsAction'的资源标识符"

我正在尝试更新我的Android应用程序,以便更好地运行Honeycomb的平板电脑.因此,我的目标是SDK的版本11(我的minSdkVersion = 4).这将Honeycomb主题添加到我的应用程序中,使其看起来更好.但是,我无法访问我的菜单选项.所以,我正在尝试将我的菜单项添加为操作栏项目,并在my/res/menu /文件夹中的文件中添加以下内容:

android:showAsAction="ifRoom|withText"
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

在'android'包中找不到属性'showAsAction'的资源标识符

我尝试将minSdkVersion数字改为11以确定它是否有用,但没有运气.有任何想法吗?谢谢!

android android-layout android-menu android-actionbar

63
推荐指数
6
解决办法
10万
查看次数

在Android上使用Google Cloud Print API

我正在开发一个需要打印到打印机的Android应用程序.我决定使用Google云打印,因为它似乎很容易设置.最初,我按照此处找到的步骤集成到Android中.这有效,因为它将打印到我想要​​的打印机.但是,这个过程对用户来说有点牵扯.就我而言,过程如下:

  1. 用户选择我在某些信息旁边显示的打印按钮.
  2. 将显示一个对话框,其中包含将要打印的内容的预览.ActionBar中有一个按钮,上面写着"打印".这开始了这个过程.
  3. 将显示一个新活动,其中显示连接到该用户Google帐户的打印机列表.用户必须选择一个.
  4. 将显示一个新页面,其中提供了打印作业的说明.
  5. 用户必须在右上角选择"打印".
  6. 打印作业启动,打印机打印出图片.

不幸的是,我的客户不想要这个过程.他们希望用户在步骤2中单击"打印",然后打印图片(步骤1,2和6).因此,我不能使用Google提供的Intent,我必须使用实际的API.这需要我获得Google Auth令牌,获取所需的打印机,然后以这种方式提交打印作业.我做以下事情:

  1. 使用Google Play服务检索用户Gmail帐户的OAuth令牌.
  2. 使用/ search API调用获取打印机列表.
  3. 使用/ submit API调用提交打印作业.

我有前两个完成.我只是在实际打印图片时遇到了麻烦.而不是打印图片,正在打印图片的字节数据(Base64编码).以下是关于我如何发送请求的一些代码:

ContentResolver contentResolver = context.getContentResolver();
try {
    InputStream is = contentResolver.openInputStream(uri);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    byte[] buffer = new byte[4096];
    int n = is.read(buffer);
    while (n >= 0) {
            baos.write(buffer, 0, n);
            n = is.read(buffer);
    }
    is.close();
    baos.flush();

    content = Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);
} catch (FileNotFoundException e) {
    Log.d(TAG, "File not found: " + uri.toString(), e);
} catch (IOException e) { …
Run Code Online (Sandbox Code Playgroud)

printing android google-cloud-print

19
推荐指数
1
解决办法
7886
查看次数

使用FragmentTransaction.replace()时Android片段视图状态丢失

我有一个很大的问题,我不太了解发生了什么.我正在开发一个使用Fragments(来自支持库)的应用程序,并且正在使用FragmentTransaction.replace()将新片段放到后端堆栈上并替换旧堆栈.代码如下:

FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = ft.beginTransaction();
// Animations in my res/anim folder
ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right);
ft.replace(R.id.fragment_container, newFragment, tag);
ft.addToBackStack(null);
ft.commit();
Run Code Online (Sandbox Code Playgroud)

这成功地取代了我的片段.我的问题如下.在一个片段中,我有一个根据用户输入构建的项目列表.现在,当用户单击下一步然后单击后退按钮(返回列表)时,列表为空,因为视图已被销毁.现在,我注意到以下内容:

  1. 不调用onSaveInstanceState.我相信这是因为只有当父Activity告诉它时才会调用它.基于以下文档:"在很多情况下,片段可能会被大部分拆除(例如放置在没有显示UI的后台堆栈上),但是在其拥有的活动实际需要保存其状态之前不会保存其状态".显然,在FragmentTransaction上执行替换不是其中之一.有没有人对此有确认或更好的解释?
  2. setOnRetainInstanceState(true)在这种情况下没有帮助.同样,我认为这与文档中的信息有关:"控制是否在活动重新创建(例如从配置更改)中保留片段实例".我没有在重新创建活动时执行任何操作,所以这没用.

所以,我想我的主要问题是:有没有办法在使用时保留View状态(只是保留Fragment)replace?有FragmentTransaction.add(),但也存在一些问题.一个是没有执行退出动画,因此动画不正确.另一个是旧片段(即处于不可见状态的片段)仍然是可点击的新片段.例如,如果我有一个ListFragment,并且我使用add将内容片段放在其上,我仍然可以单击ListFragment中的列表项.

android android-lifecycle android-fragments android-fragmentactivity

10
推荐指数
1
解决办法
3015
查看次数

工具栏下面有水平ProgressBar

借助Android Lollipop和AppCompat-v7中的新工具栏API,他们正在删除许多自动功能,以使Toolbar/ActionBar更加强大.其中一个是进度条.由于Toolbar只是一个ViewGroup,我假设添加一个ProgressBar很简单.但是,我似乎无法让它正常工作.

我做了以下(使用SmoothProgressBar库):

    // I instantiate the toolbar and set it as the actionbar
    mToolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(mToolbar);

    // I create a ProgressBar and set the drawable to the SmoothProgressBar drawable
    ProgressBar progressBar = new ProgressBar(this);
    progressBar.setIndeterminateDrawable(new SmoothProgressDrawable.Builder(this).color(Color.BLUE).interpolator
            (new DecelerateInterpolator()).sectionsCount(4).separatorLength(8).speed(2f).mirrorMode(true).build());
    // I add the progressbar to the view with what I thought were the proper LayoutParams.
    Toolbar.LayoutParams params = new Toolbar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 20);
    params.gravity = Gravity.BOTTOM;
    mToolbar.addView(progressBar, params);
    progressBar.setIndeterminate(true);
Run Code Online (Sandbox Code Playgroud)

我认为这可行,因为我只是将一个ProgressBar添加到ViewGroup的底部.但是,它根本没有显示,正在删除标题.下面你可以看到前后.有谁知道如何解决这个问题?我的目标是在操作栏下面放置一个ProgressBar.

之前 在图片之前

照片之后

android android-appcompat android-toolbar

6
推荐指数
1
解决办法
7961
查看次数

Android:可滚动标签

我正在开发我的第一个Android应用程序.我正在为我的应用程序使用选项卡式布局.我在开发指南上按照教程进行了操作并遇到了问题.本教程仅使用了三个选项卡,但我还需要更多选项卡.因此,选项卡会调整大小并组合起来.我希望有人可以告诉我如何让它们滚动,就像使用多个标签时在dolphin浏览器中一样.谢谢!

〜阿龙

tabs android

5
推荐指数
2
解决办法
9777
查看次数

如何只有一次性对话框

我想知道如何创建一个只在首次打开应用程序时弹出的对话框.例如,我在市场上有一个Android应用程序.当我更新它时,我想实现一个弹出的框,显示应用程序中已更新的内容,并且在应用程序再次更新之前不会再次弹出.谢谢!

android dialog

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

RecyclerView:UnsupportedOperationException

RecyclerView在某些设备上遇到了一个奇怪的问题(目前看来只是三星).我收到以下错误消息:

java.lang.UnsupportedOperationException: RecyclerView does not support scrolling to an absolute position.
   at android.support.v7.widget.RecyclerView.scrollTo(RecyclerView.java:869)
   at android.view.View.setScrollX(View.java:9945)
   at android.animation.PropertyValuesHolder.nCallIntMethod(PropertyValuesHolder.java)
   at android.animation.PropertyValuesHolder.access$200(PropertyValuesHolder.java:35)
   at android.animation.PropertyValuesHolder$IntPropertyValuesHolder.setAnimatedValue(PropertyValuesHolder.java:825)
   at android.animation.ObjectAnimator.animateValue(ObjectAnimator.java:571)
   at android.animation.ValueAnimator.animationFrame(ValueAnimator.java:1175)
   at android.animation.ValueAnimator.doAnimationFrame(ValueAnimator.java:1216)
   at android.animation.ValueAnimator.setCurrentPlayTime(ValueAnimator.java:524)
   at android.animation.LayoutTransition.startChangingAnimations(LayoutTransition.java:1021)
   at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2206)
   at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)
   at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6637)
   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:814)
   at android.view.Choreographer.doCallbacks(Choreographer.java:614)
   at android.view.Choreographer.doFrame(Choreographer.java:584)
   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:800)
   at android.os.Handler.handleCallback(Handler.java:733)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:146)
   at android.app.ActivityThread.main(ActivityThread.java:5602)
   at java.lang.reflect.Method.invokeNative(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:515)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
   at dalvik.system.NativeStart.main(NativeStart.java)
Run Code Online (Sandbox Code Playgroud)

其中的代码RecyclerView.scrollTo(x,y)是:

@Override
public void scrollTo(int x, int y) {
    throw new UnsupportedOperationException(
            "RecyclerView …
Run Code Online (Sandbox Code Playgroud)

android android-support-library android-recyclerview

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

adb与Ubuntu的问题

我是Linux的新手,正在尝试为Android开发设置我的机器.我安装了SDK,并通过更改〜/ .bashrc并添加以下内容来设置路径中的"platform-tools":

export PATH=$PATH:/home/user/sdk/platform-tools
Run Code Online (Sandbox Code Playgroud)

当我输入:

echo $PATH 
Run Code Online (Sandbox Code Playgroud)

进入命令行,它将目录吐回我的sdk platform-tools.

现在,当我输入:

adb devices
Run Code Online (Sandbox Code Playgroud)

命令行显示"未找到adb命令".

如果有人能帮助我,我将不胜感激.谢谢!

〜Nemisis7654

linux ubuntu android adb

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