小编Fer*_*nch的帖子

Android系统.如何对一个国家/地区的所有语言使用相同的可本地化消息?

我的国家(西班牙)有几种语言(es-ES,ca-ES,gl-ES,eu-ES).我们暂时不会添加所有语言,因此我们希望在西班牙使用主要语言,即西班牙语.我们希望显示/values-es/strings.xml用户何时选择了该国家/地区的其他语言.我们怎么做?

哦,我们想用英语作为默认语言(/values/strings.xml).

有类似的东西会很棒/values-ES/strings.xml,但我想这是不可能的,因为第一个代码应该是语言代码.

现在我们将/values-es/strings.xml文件复制到其他文件夹(values-ca,values-glvalues-eu),但我们想避免这样做.

android localization

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

ViewTreeObserver不会调用onGlobalLayout

我已经有活动,我正在使用ViewTreeObserver没有问题,但在这种情况下,我没有得到onGlobalLayout回调.

由于在执行http API调用后得到视图的宽度,因此宽度似乎已经计算好了(由于API调用所花费的时间).无论如何,要确保我添加一个监听器ViewTreeObserver.但有时候我没有得到回调(是的,有时候).

我可以在添加监听器之前检查宽度,以避免等待回调,但我不知道为什么我有时没有得到回调.我检查过viewTreeObserver它总是活着的.

ViewTreeObserver viewTreeObserver = view.getViewTreeObserver();

assert viewTreeObserver.isAlive();

viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout()   // Not called sometimes, why?
    {
        view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
        doSomething(view.getWidth());
    }
});
Run Code Online (Sandbox Code Playgroud)

现在我将使用这个技巧:

int width = view.getWidth();

if (width > 0) {
    doSomething(view.getWidth());
} else {
    // use the ViewTreeObserver
}
Run Code Online (Sandbox Code Playgroud)

编辑:

为了防止它有用,我制作了这个帮助方法:

/**
 * Runs code on global layout event, useful when we need to do something after the layout is done
 * (like getting …
Run Code Online (Sandbox Code Playgroud)

layout android

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

如何获取UIAlertController observable(ReactiveCocoa或RxSwift)?

我实施了"反应",UIAlertController所以我可以Observable<Int>按下按钮.(见下面的代码).

我的问题或疑问是:

  • 这个实现是否正确?我不喜欢存放观察者; 我想知道是否有更好的解决方案.
  • 或者...... ReactiveCocoa或RxSwift中是否已实现此功能?

这是实施.我删除了与te问题无关的部分.

class AlertBuilder {

    typealias AlertAction = (Int) -> ()

    private let alert: UIAlertController

    /** If observable() is called, we keep here the observers to notify them */
    private var observers: [AnyObserver<Int>] = []

    init(alert: UIAlertController) {
        self.alert = alert
    }

    /** When using observable(), the action is not needed. */
    func button(_ title: String, style: UIAlertActionStyle = .default, action: AlertAction? = nil) -> AlertBuilder {

        let buttonIndex = alert.actions.count …
Run Code Online (Sandbox Code Playgroud)

ios reactive-cocoa rx-swift

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

如何避免在HQL和Criteria中不必要的选择和连接

我一直在尝试HQLCriteria的不同组合,但我无法避免一些不必要的连接(在两者中)和一些不必要的选择(在Criteria中).

在我们的场景中,我们在SegmentApplication实体之间有一个@ManyToMany关系(导航是从Segment到Applications).

首先我尝试了这个标准:

Application app = ...
List<Segment> segments = session.createCriteria(Segment.class)
    .createCriteria(Segment.APPLICATIONS)
    .add(Restrictions.idEq(app.getId()))
    .list();
Run Code Online (Sandbox Code Playgroud)

Wich生成这个SQL:

select
    this_.id as id1_1_,
    this_.description as descript2_1_1_,
    this_.name as name1_1_,
    applicatio3_.segment_id as segment1_1_,
    applicatio1_.id as app2_,               <==== unnecessary APPLICATIONS columns
    applicatio1_.id as id7_0_,
    applicatio1_.name as name7_0_,
    applicatio1_.accountId as accountId7_0_,
    applicatio1_.applicationFlags as applicat5_7_0_,
    applicatio1_.description_ as descript6_7_0_,
from
    SEGMENTS this_ 
inner join
    SEGMENTS_APPLICATIONS applicatio3_ 
        on this_.id=applicatio3_.segment_id 
inner join                                       <==== unnecessary join …
Run Code Online (Sandbox Code Playgroud)

optimization hibernate join hql criteria

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

如何更改材质AlertDialog和ProgressDialog的微调器,文本和按钮颜色

我的应用程序扩展Theme.AppCompat.Light,材质样式的对话框显示为白色背景,黑色文本颜色和绿色按钮(旋转器ProgessDialog也是绿色).

我想改变文本的颜色和字体,以及按钮和微调器的颜色.

我该怎么做?

我发现这篇文章,但XML解决方案对我不起作用,其他答案是没有的第三方库ProgressDialog.

谢谢!

android themes

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

IntelliJ IDEA:如何在pom.xml中将项目库与依赖项同步?

当我在我的项目的一个pom.xml(有几个模块)中更改依赖项版本时,我看到了新版本以及项目结构的"库"部分中的旧版本.

例如,最近我将Drools从5.4版更改为5.5版.当我进入Libraries部分时,我看到了两个库,所以我手动删除了5.4.

如何告诉IDEA删除pom.xml文件中未引用的库?

谢谢

intellij-idea pom.xml maven

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

Android - 如何从相机或图库拍摄照片

我想让用户从相机或设备中的现有图片(图库或其他)拍摄照片.我怎样才能做到这一点?

我已经实现了下面的解决方案,这似乎工作正常,但文档很混乱,所以我想知道是否有更好的解决方案.

另外,请查看此相关帖子.在那里,您将看到如何获取图像路径或位图:以编程方式从Android的内置Gallery应用程序中获取/选择图像

因此,在我的解决方案中,您将创建一个TakePictureHelper对象并执行以下操作.

假设您显示一个对话框,用户可以选择"相机"或"其他".当用户选择一个选项时,您可以调用takeFromCamera()takeFromOther().拍摄(或不拍摄)照片时,onActivityResult()将调用该方法.在那里你会打电话retrievePicture,它将返回图片的Uri,如果没有拍照,则返回null.

如果我不清楚,请告诉我你的想法,分享想法或问我什么.

非常感谢你!

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TakePictureHelper {

    public final static int REQUEST_CAMERA = 1;
    public final static int REQUEST_OTHER = 2;

    private Uri cameraImageUri;

    /**
     * Request picture from camera using the given title
     */
    public void takeFromCamera(Activity activity, String title)
    {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        File cameraImageOutputFile …
Run Code Online (Sandbox Code Playgroud)

camera android image

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

缺少电流时的Android默认密度值

我有一个关于密度的问题,以及 Android 如何values为当前密度选择正确的文件夹。我想我已经找到了答案,但我不完全确定,所以我会发布我发现的内容。至少,这篇文章可以帮助某人。

例如,如果我只包含文件夹values, values-hdpiand values-xxhdpi,当当前密度为 时,Android 会做什么xhpdi

似乎Android寻找更高密度的文件夹,所以它会使用values-xxhdpi.

当电流密度为 时会发生什么xxxhdpi

看起来,如果Android找不到更高密度的文件夹,它会寻找一个更低的文件夹,所以它也会使用values-xxdpi

values对于在某些特定values-*dpi文件夹中定义的值,Android 绝不会使用默认文件夹。

总而言之,假设我只有values,values-xxhdpivalues-hdpi

  • 中的值values-hdpi将用于密度为ldpimdpi和 的设备hdpi
  • 中的值values-xxhdpi将用于密度为xhdpixxhdpi和 的设备xxxhdpi
  • values如果在任何values-*dpi文件夹中定义了值,则永远不会使用它们。

让我知道您对此有何看法。

谢谢

resources android

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

如何在 Android 中播放响亮的警报声(哔)

在我的应用程序中,我需要播放响亮的声音作为紧急警报。我正在尝试这个,但如果可能的话,我想产生更大的声音(我能得到的最大声)。

AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamVolume(AudioManager.STREAM_DTMF, audioManager.getStreamMaxVolume(AudioManager.STREAM_DTMF), AudioManager.FLAG_PLAY_SOUND);

ToneGenerator tone = new ToneGenerator(AudioManager.STREAM_DTMF, 100); // 100 is max volume
tone.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 500); // 500ms
Run Code Online (Sandbox Code Playgroud)

你知道如何发出最响亮的声音吗?

audio android

5
推荐指数
0
解决办法
4781
查看次数

嵌套视图中的拥抱和压缩阻力

我试图了解拥抱和抗压力是如何起作用的.

我有这种情况,我需要左边的两个标签(绿色容器内)和右边的两个标签(蓝色容器内).

在此输入图像描述

如图所示,我希望绿色容器拥抱内容(Android's wrap content)和蓝色容器以填充剩余空间(Android's fill_parent).

我想我可以在绿色视图中添加拥抱/压缩优先级,例如:

greenView.setContentHuggingPriority(
    UILayoutPriorityDefaultHigh, forAxis: .Horizontal)
greenView.setContentCompressionResistancePriority(
    UILayoutPriorityDefaultHigh, forAxis: .Horizontal)
Run Code Online (Sandbox Code Playgroud)

但似乎它没有按预期工作.我必须将这些约束应用于(红色和黄色)标签.

谁知道原因?

一些想法(编辑):

根据Ken的回答,您必须将拥抱/压缩设置为标签而不是容器视图.

在这个问题的例子中,我会设置一个拥抱750(高)和1000(必需)的阻力到左边的标签.由于标签的默认值为251(低+ 1)和750(高)的阻力,因此左侧标签(750> 251和1000> 750)的拥抱和压缩将更大.同时,压缩将大于标签内的拥抱(1000> 750).

这样,左侧的标签将尝试拥抱其内容,但不会压缩它.例如,红色标签无法完全包裹其内容,因为黄色标签不想压缩.

唷!

ios autolayout

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