小编gar*_*tor的帖子

ImageView填充父级的宽度或高度,但保持纵横比

我有一个方形图像(虽然这个问题也适用于矩形图像).我想尽可能大地显示图像,必要时拉伸它们以填充它们的父母,同时仍然保持纵横比.图像小于ImageView.问题是,我无法拉伸图像并"匹配"ImageView的高度和宽度.

这是我的XML布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:padding="10dp">

    <ImageView android:id="@+id/image"
               android:layout_width="fill_parent"
               android:layout_height="fill_parent"
               android:adjustViewBounds="true"
               android:scaleType="fitCenter"
               android:layout_marginTop="10dp"/>

    <TextView android:id="@+id/name"
              android:layout_below="@id/image"
              android:layout_alignLeft="@id/image"
              android:layout_marginTop="20dp"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:textSize="18dp"/>

    <TextView android:id="@+id/name2"
              android:layout_below="@id/name"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:textSize="14dp"/>


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

我已经使用的多种组合fill_parent,wrap_content与多个scaleTypes: ,fitCenter,fitStart,fitEnd,centerInside他们都画在正确的纵横比的图像,但没有人真正缩放图像UP和ImageView的本身,导致无论是在TextViews被推所有屏幕下方,ImageView内部空白区域,图像未缩放或图像裁剪.

我无法为此找到合适的组合.

android android-layout android-imageview android-relativelayout

41
推荐指数
4
解决办法
6万
查看次数

Android单元测试:Bundle/Parcelable

你如何对Parcelable进行单元测试?我创建了一个Parcelable类,并编写了这个单元测试

TestClass test = new TestClass();
Bundle bundle = new Bundle();
bundle.putParcelable("test", test);

TestClass testAfter = bundle.getParcelable("test");
assertEquals(testAfter.getStuff(), event1.getStuff());
Run Code Online (Sandbox Code Playgroud)

我故意试图通过返回null来测试失败createFromParcel(),但它似乎成功了.它似乎在需要之前不会被包围.我该怎么强迫Bundle来...捆绑?

android unit-testing bundle parcelable

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

在bash提示中插入新行

这似乎是一个常见的问题,但我无法在谷歌和SO上找到这个.如果你找到一篇,请指点我.

如何在bash提示中插入新行(当您只按ENTER键时),类似于Windows提示中的那一行?

Linux的:

$
$
$
Run Code Online (Sandbox Code Playgroud)

视窗:

C:\>

C:\>

C:\>
Run Code Online (Sandbox Code Playgroud)

我需要两者之间的额外空间.

linux bash newline

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

如何在Ruby中迭代内存中的zip文件

我正在编写一个单元测试,其中一个正在返回一个zip文件,我想检查这个zip文件的内容,从中获取一些值,并将值传递给下一个测试.

我正在使用Rack Test,所以我知道我的zip文件的内容在里面last_response.body.我查看了RubyZip的文档,但似乎总是期待一个文件.由于我正在运行单元测试,我更喜欢在内存中完成所有操作,以免污染任何带有测试zip文件的文件夹,如果可能的话.

ruby zip in-memory rack-test

11
推荐指数
3
解决办法
6215
查看次数

在Sinatra的自定义错误块中设置状态代码

我有400状态代码的自定义错误消息:

get '/do' do
  raise ParamXMissingError unless params['x']
end

error ParamXMissingError do
  haml :custom_error_page
end
Run Code Online (Sandbox Code Playgroud)

我希望ParamXMissingError为400,但是当我运行上面的代码,并通过Firefox网络工具检查时,似乎Sinatra实际上返回500而不是400.如何让它显示custom_error_page.haml并返回400?

最好是从错误块中处理状态代码和页面是很好的,而不是我在提升时会撒上的东西ParamXMissingError.例如,这将是重复的,并不是一个好的解决方案:halt 400, haml(:custom_error_page)

ruby rack sinatra http-status-code-301

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

你应该在docker中安装nginx吗?

我想知道你的docker镜像中是否有nginx的优点和缺点.有很多关于如何在docker上安装nginx的教程,但我要问的是,你应该或不应该?

你应该在docker主机上安装nginx,并让它指向各个正在运行的容器(可能正在运行彩虹等)?要么

你应该在容器内安装另一个nginx层吗?

我没有看到在docker容器中有另一个nginx的任何好处,但后来我想知道为什么有这么多的教程,好像这是常识,而我没有得到常识,这让我感到沮丧.

编辑:

每个容器的配置越少,对我来说就越好.如果nginx容器和它后面的app容器之间存在紧密耦合,那么它肯定不是我正在寻找的解决方案,并且首先打败容器的目的.这就是我倾向于在Docker主机上安装nginx的原因.

如果我们要有一个nginx容器,容器应该独立于应用程序.client_max_body_size除非可以在执行时自定义特定于应用程序的配置(例如端口号和IP地址,工作进程数),否则不应将其配置到容器中docker run.

nginx lxc docker

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

在Android View上正确释放位图的位置?

我有一个自定义视图,它绘制了一些包括位图的东西.我想将这个绘图缓存到一个位图上,这样我只需要在onDraw中绘制一个单独的位图,而不是重复这些绘图任务和计算.

在我们不再使用位图后,需要回收位图.我没有在View类中看到onDestroy()或任何远程类似的东西.有没有我可以覆盖的回调方法来实现这个目的?

public void <insert_callback_here>() {
    cachedBitmap.recycle();
}
Run Code Online (Sandbox Code Playgroud)

没有动画.这是一张静态图片.有很多计算来绘制图像,所以我宁愿在onMeasure()上做一次.

android view bitmap android-custom-view

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

可分辨和继承

这里有几次关于SO的问题,但我的情况有点不同.

我有一个实现Parcelable的A类.A类包含一些可以分区的成员数据.它有自己的CREATOR和实现writeToParcel(),describeContents()以及一个接受一个的构造函数Parcel.

有一个B类从A类扩展.B类有额外的成员数据,但它们都不需要被分配.基本上,B类的可分配数据与A类相同.如果我尝试将B放入Bundle,将其传递给另一个Activity,并将其读回,我会得到一个ClassCastException.我猜这是预期的.

经过一些反复试验,为了让B级可以让人参与,我必须至少实现这两件事:

public static final Parcelable.Creator<B> CREATOR
        = new Parcelable.Creator<B>() {
    public B createFromParcel(Parcel source) {
        return new B(source);
    }

    public B[] newArray(int size) {
        return new B[size];
    }
};

public B(Parcel in) throws JSONException {
    super(in);
}
Run Code Online (Sandbox Code Playgroud)

所以我关心的是这个.大约有六个或更多类从A扩展而且所有类都有与B相同的问题.看起来很傻他们每个人都必须添加自己的静态CREATOR和接受a的构造函数Parcel,只是将它传递给A其他一切都是一样的.使它与众不同的唯一因素是类的名称.它首先胜过继承的目的.

例如,如果有另一个扩展B的C类,我需要做同样的事情:

public static final Parcelable.Creator<C> CREATOR
        = new Parcelable.Creator<C>() {
    public C createFromParcel(Parcel source) {
        return new C(source);
    }

    public C[] newArray(int size) {
        return …
Run Code Online (Sandbox Code Playgroud)

inheritance android bundle multiple-inheritance parcelable

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

git squash提交公共服务器,但保留私有服务器的详细提交

我正在写一个开源库.我正在使用两个遥控器:一个用于个人测试平台和备份的私人仓库,另一个用于github的公共托管.

在私人仓库中,这是我保存的地方,并做了很多提交和推送所有的小改动,如"固定拼写"或"仍在处理bug#123!".这很好,我想保持这种方式.私人回购将永远不会分享给任何人.

在github上的公共回购中,我希望我的git提交历史是干净的.将多个提交合并为一个提交,例如"修复了错误#123".

问题是,如何在两个不同的远程回购中保留两个单独的git历史记录?

我一直在读文章git rebase.会rebase改变那个分支的整个历史吗?如果我改变公共回购的历史,私人回购也会被重新定价吗?

如果我维持两个分支会更好吗?是否有可能公共服务器只看到一个分支(作为主服务器),而另一个分支机构看到具有详细提交的两个分支?

我不确定这种情况的最佳做法是什么.感谢您的时间.

git version-control github git-rebase

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

如何使 Vim 粘贴始终从寄存器 0 粘贴,除非指定

Vim 中的寄存器0应包含最后一个 yank 命令 ( ) 的结果y

\n\n

现在,我不想p从默认寄存器 ( ) 粘贴,而是从寄存器粘贴,除非指定了寄存器(通过""p0"+p例如,通过 )。

\n\n

我怎样才能在我的 .vimrc 中做到这一点?

\n\n

我试过这个:

\n\n
xnoremap p "\'v:register\'p\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我不知道如何执行 \xe2\x80\x9cuse-the-specified-register-otherwise-0\xe2\x80\x9d 部分。

\n

vim

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