我的国家(西班牙)有几种语言(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-gl和values-eu),但我们想避免这样做.
我已经有活动,我正在使用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) 我实施了"反应",UIAlertController所以我可以Observable<Int>按下按钮.(见下面的代码).
我的问题或疑问是:
这是实施.我删除了与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) 我一直在尝试HQL和Criteria的不同组合,但我无法避免一些不必要的连接(在两者中)和一些不必要的选择(在Criteria中).
在我们的场景中,我们在Segment和Application实体之间有一个@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) 我的应用程序扩展Theme.AppCompat.Light,材质样式的对话框显示为白色背景,黑色文本颜色和绿色按钮(旋转器ProgessDialog也是绿色).
我想改变文本的颜色和字体,以及按钮和微调器的颜色.
我该怎么做?
我发现这篇文章,但XML解决方案对我不起作用,其他答案是没有的第三方库ProgressDialog.
谢谢!
当我在我的项目的一个pom.xml(有几个模块)中更改依赖项版本时,我看到了新版本以及项目结构的"库"部分中的旧版本.
例如,最近我将Drools从5.4版更改为5.5版.当我进入Libraries部分时,我看到了两个库,所以我手动删除了5.4.
如何告诉IDEA删除pom.xml文件中未引用的库?
谢谢
我想让用户从相机或设备中的现有图片(图库或其他)拍摄照片.我怎样才能做到这一点?
我已经实现了下面的解决方案,这似乎工作正常,但文档很混乱,所以我想知道是否有更好的解决方案.
另外,请查看此相关帖子.在那里,您将看到如何获取图像路径或位图:以编程方式从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) 我有一个关于密度的问题,以及 Android 如何values为当前密度选择正确的文件夹。我想我已经找到了答案,但我不完全确定,所以我会发布我发现的内容。至少,这篇文章可以帮助某人。
例如,如果我只包含文件夹values, values-hdpiand values-xxhdpi,当当前密度为 时,Android 会做什么xhpdi?
似乎Android寻找更高密度的文件夹,所以它会使用values-xxhdpi.
当电流密度为 时会发生什么xxxhdpi?
看起来,如果Android找不到更高密度的文件夹,它会寻找一个更低的文件夹,所以它也会使用values-xxdpi。
values对于在某些特定values-*dpi文件夹中定义的值,Android 绝不会使用默认文件夹。
总而言之,假设我只有values,values-xxhdpi和values-hdpi:
values-hdpi将用于密度为ldpi,mdpi和 的设备hdpi。values-xxhdpi将用于密度为xhdpi,xxhdpi和 的设备xxxhdpi。values如果在任何values-*dpi文件夹中定义了值,则永远不会使用它们。让我知道您对此有何看法。
谢谢
在我的应用程序中,我需要播放响亮的声音作为紧急警报。我正在尝试这个,但如果可能的话,我想产生更大的声音(我能得到的最大声)。
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)
你知道如何发出最响亮的声音吗?
我试图了解拥抱和抗压力是如何起作用的.
我有这种情况,我需要左边的两个标签(绿色容器内)和右边的两个标签(蓝色容器内).
如图所示,我希望绿色容器拥抱内容(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).
这样,左侧的标签将尝试拥抱其内容,但不会压缩它.例如,红色标签无法完全包裹其内容,因为黄色标签不想压缩.
唷!