小编Ste*_*oen的帖子

堆叠操作栏的自定义样式?

我想为堆叠和非堆叠标签栏分别设置背景.

这应该解释一下:

在此输入图像描述

所以我的方式是:

对于平板电脑,请使用深色背景标签 对于其他一切,使用浅色背景.

这涵盖了大多数用例,但我想让它在电话风景中看起来不那么糟糕.

我能做到这一点吗?我错过了一个样式修饰符,也许?

android android-actionbar

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

GridLayout列超出了它的范围

我正在尝试制作类似网格的形式,类似于官方Android开发者博客上的示例.

这是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="48dp"
        android:layout_marginRight="48dp"
        android:layout_marginTop="@dimen/activity_vertical_margin"
        android:columnCount="2"
        android:rowCount="2">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:layout_gravity="end"
            android:layout_row="0"
            android:text="Send"
            android:textColor="?android:attr/textColorPrimary"
            android:textSize="24sp" />

        <Spinner
            android:id="@+id/send_currency"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="1"
            android:layout_row="0" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:layout_gravity="end"
            android:layout_row="1"
            android:text="to"
            android:textColor="?android:attr/textColorPrimary"
            android:textSize="24sp" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="1"
            android:layout_row="1"
            android:hint="username"
            android:textColor="?android:attr/textColorPrimary"
            android:textSize="24sp" />
    </GridLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我的左栏(静态文本,右对齐)工作正常.它将文本对齐,宽度取决于最宽的行.

但是,右列似乎是在GridLayout范围之外绘制的.

选择了GridLayout的布局预览

在该图片中,蓝色框是GridLayout的边界.您已经可以在顶部的绿色栏中看到问题.右侧应该停在GridLayout的边界(就像左侧一样),但由于某种原因它会超越它.

选择了右列的布局预览

该图片中的蓝色框是EditText的边界(它设置为wrap_content).然而,浅绿色的盒子是允许它扩展的范围.当我在EditText中输入大量字符时,它会经过GridLayout的边界,甚至超过手机屏幕的边缘!

截图

这是GridLayout中的错误吗?或者我错过了什么?

android android-layout android-gridlayout

8
推荐指数
2
解决办法
3596
查看次数

给另一个方法发出一个RxJava Observable

我在Fragment中有一个变量,它会在Fragment的整个生命周期中多次改变它的值.它是由UI交互触发的,所以我认为使用Observable来保存它可能是一个好主意,而不是将所有要更新的视图作为字段并从设置器中进行UI更改.

该值必须通过另一种方法(基本上应该调用onNext()订阅者的setter )更新,而不是通过Observable本身.有没有办法用RxJava的设计做到这一点?

换句话说,我希望有一个Observable字段,并给它新的值来onNext()从类中的另一个方法发出(调用它的订阅者).

java android rx-java

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

RxJava:找出BehaviorSubject是否是重复值

我正在创建一个Android界面,显示从网络中获取的一些数据.我想让它显示最新的可用数据,并且永远不会为空(除非根本没有提取任何数据)所以我使用BehaviorSubject为订阅者(我的UI)提供最新的可用信息,同时刷新它更新它的背景.

这是有效的,但由于我的UI中的另一个要求,我现在必须知道发布的结果是否从网络中获得新鲜.(换句话说,我需要知道发布的结果是否是BehaviorSubject的已保存项目.)

我怎样才能做到这一点?如果我需要将它拆分为多个Observable,那很好,只要我能够获得BehaviorSubject的缓存行为(获取最后可用的结果),同时还能够判断返回的结果是来自缓存还是不.我能想到的一个hacky方法是检查响应的时间戳是否相对较快,但这确实很草率,我宁愿找到一种方法来使用RxJava.

java android reactive-programming rx-java

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

如何从屏幕上的某个位置启动活动,例如在主屏幕或最近的应用中?

我想从对话框创建一个"最大化"效果到我的完整活动,所以我希望开始动画显示从一个框扩展到完整大小的活动.

由于Jelly Bean(按下应用程序快捷方式将从该图标的位置放大应用程序,并且"应用程序"菜单已从ICS开始执行此操作,因此库存启动程序已执行此操作.

animation android

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

如何在Android支持库中使用上下文操作栏?

我的ActionBarActivity中有一个ListView,其中包含可以长按其他操作的项目.

我目前正在使用registerForContextMenu并显示一个丑陋的弹出对话框,因此我想将其更改为使用上下文操作栏.

我怎样才能做到这一点?CHOICE_MODE_MULTIPLE_MODAL以及其他一些东西似乎是API 11+.

android android-actionbar

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

Android场景转换:自定义插值器?

我有一个带有共享元素的场景转换启动的活动,它可以正常工作.

ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(), sharedView, "sharedView");
Intent intent = new Intent(getActivity(), NewActivity.class);
ActivityCompat.startActivity(getActivity(), intent, options.toBundle());
Run Code Online (Sandbox Code Playgroud)

从旧活动到新活动,该元素可以平滑地生成动画.但是,我想改变过渡动画的方式,特别是内插器.它似乎是使用默认的平滑插值器,但我想使用新的材料快速输出慢插入器,我无法弄清楚如何指定它.

我该怎么做才能覆盖默认转换?

android transitions android-animation

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

使用RxJava进行电子邮件登录验证,一个observable发出两次

我正在制作一个简单的登录表单(电子邮件和密码)来尝试加强我的反应式编程技能组合.我在使电子邮件字段验证按照我想要的方式工作时遇到了一些麻烦.

这是我的代码:

    final Observable<CharSequence> email = RxTextView.textChanges(emailView);

    Observable<Boolean> emailIsValid = email.map(new Func1<CharSequence, Boolean>() {
        @Override
        public Boolean call(CharSequence charSequence) {
            Log.d("asdf", "emailIsValid call: " + charSequence);
            return Pattern.matches(Patterns.EMAIL_ADDRESS.pattern(), charSequence);
        }
    });
    RxView.focusChanges(emailView)
            .withLatestFrom(emailIsValid, new Func2<Boolean, Boolean, Boolean>() {
                @Override
                public Boolean call(Boolean hasFocus, Boolean emailIsValid) {
                    return (!hasFocus && !emailIsValid);
                }
            })
            .subscribe(new Action1<Boolean>() {
                @Override
                public void call(Boolean showError) {
                    if (showError) {
                        emailInputLayout.setError("Enter a valid email");
                    } else {
                        emailInputLayout.setError(null);
                    }
                }
            });
    Observable<CharSequence> password = RxTextView.textChanges(passwordView);

    Observable.combineLatest(emailIsValid, …
Run Code Online (Sandbox Code Playgroud)

java android functional-programming reactive-programming rx-java

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

在libgdx中使用通用Tween引擎添加补间?

我有一个sprite循环补间,就像一个空闲动画.我想为它添加另一个补间,所以它们同时播放.(例如,如果我的第一个补间移动它,我的第二个补间移动它,我希望它向上和向右移动.)

但每当我玩第二个补间时,它似乎完全覆盖了第一个补间.我究竟做错了什么?

这是我的代码:

Tween.to(sprTurtle, SpriteAccessor.POS_XY, 0.4f)
    .waypoint(posTurtle[0] + (20 * density), posTurtle[1] + (20 * density))
    .target(posTurtle[0] + (30 * density), posTurtle[1])
    .ease(Quad.INOUT)
    .path(TweenPaths.catmullRom)
    .repeatYoyo(Tween.INFINITY, 0)
    .delay(0.1f)
    .start(tweenManager);
Tween.to(sprTurtle, SpriteAccessor.POS_XY, 1f)
    .target(50, 50)
    .repeat(Tween.INFINITY, 0)
    .start(tweenManager);  
Run Code Online (Sandbox Code Playgroud)

java android libgdx

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

工具栏没有着色MenuItems

我想在我的工具栏中使用一些透明的白色图标,但它们并不适合我的主题(基于AppCompat.Light).无论我放置什么颜色图标,它们都保持这种颜色并且不会变成深灰色(如溢出和SearchView图标那样).

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:contentInsetStart="0dp">
Run Code Online (Sandbox Code Playgroud)

这是我的主题:

<style name="Theme.*myapp*" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/accent</item>
    <item name="colorPrimaryDark">@color/accent_dark</item>
    <item name="colorAccent">@color/accent</item>
    <item name="windowActionBar">false</item>
    <item name="android:dialogTheme">@style/*myapp*.Dialog</item>
    <item name="android:textColorPrimary">#DE000000</item>
    <item name="android:textColorSecondary">#8A000000</item>
</style>
Run Code Online (Sandbox Code Playgroud)

有什么我必须要做的工具栏来着色MenuItems?

android material-design android-toolbar

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