小编Vin*_*rat的帖子

Honeycomb - 在操作栏内自定义SearchView

我有一个字段,用户可以在应用程序的操作栏中键入搜索查询.这是在操作栏中使用活动中的菜单膨胀声明的:

<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
>
    <item
        android:id="@+id/action_search"
        android:showAsAction="ifRoom"
        android:actionViewClass="android.widget.SearchView"
        android:title="@string/search"
    ></item>
</menu>
Run Code Online (Sandbox Code Playgroud)

我需要自定义SearchView的外观(例如背景和文本颜色).到目前为止,我找不到使用XML(使用样式或主题)的方法.

在给菜单充气时,我唯一的选择是在代码中执行此操作吗?


编辑#1:我已经尝试过编程,但我无法通过简单的方法设置文本颜色.另外,当我做searchView.setBackgroundResource(...)的背景被设定在全局Widget(也当搜索查看图标化).

编辑#2:在没有太多信息的搜索开发人员参考

android android-3.0-honeycomb

9
推荐指数
3
解决办法
6727
查看次数

Android + Picasso:更改URL缓存过期

我正在使用Picasso来下载和显示所有应用程序中的图像.这些图像很少变化(它们被认为有效几个月).

是否有一种简单的方法可以让Picasso(或底层的okHttp)将这些图像保存在光盘上这么长时间?

android caching picasso

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

Android中的自定义GridView(尝试复制WindowsMediaPlayer相册布局)

我正在尝试创建一个类似于用于在Windows Media Player中显示相册的布局(请参见下面的屏幕截图).

我发现:

  • 在listviews中填充gridviews是不可能的.
  • 在gridviews中也不可能有标题或类别.
  • 我对动态构建视图的担心是,我们总共可以拥有数千个项目(每个类别中有数百个类别和数百个项目).因此,我认为在活动/片段创建上构建整个布局是不可能的.

我唯一可能开发自定义小部件吗?有没有人设法让这样的东西运行?

PS:如果它有帮助,我的目标是Honeycomb.

在此输入图像描述

android listview gridview widget android-3.0-honeycomb

8
推荐指数
0
解决办法
738
查看次数

在Android中测试自定义ContentProvider

我编写了我的内容提供程序,应该在SqlLite数据库中包装对2个表的访问.现在我想为它编写一些测试用例,但我从来没有这样做过.阅读开发者指南中的部分后,我必须说我没有得到任何测试.

以下是我的代码.这是测试项目中唯一与我的主项目相对应的类.当我在Eclipse中执行它时,模拟器正确启动,软件包已安装,但它没有运行测试:

测试运行失败:测试运行不完整.预计1次测试,收到0

这是测试类:

public class ArticleProviderTest extends ProviderTestCase2<ArticleProvider> {

    static final Uri[] validUris = new Uri[] { Articles.CONTENT_URI, 
       Pictures.CONTENT_URI,
       Pictures.getContentUriForArticleId(1) };

    public ArticleProviderTest(Class<ArticleProvider> providerClass, String providerAuthority) {
        super(providerClass, providerAuthority);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
    }

    public void testQuery() {
        ContentProvider provider = getProvider();    
        for (Uri uri : validUris) {
            Cursor cursor = provider.query(uri, null, null, null, null);
            assertNotNull(cursor);
        }    
    }
}
Run Code Online (Sandbox Code Playgroud)

清单文件,如果它有帮助:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="fr.marvinlabs.xxxx"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="7" />
    <instrumentation android:targetPackage="fr.marvinlabs.xxxx" android:name="android.test.InstrumentationTestRunner" />
    <application …
Run Code Online (Sandbox Code Playgroud)

android unit-testing android-contentprovider

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

Kotlin for assertThat(foo,instanceOf(Bar.class))

您如何assertThat(foo, instanceOf(Bar.class))用Kotlin 写作?

似乎不喜欢 .class

我想提出一个断言,它比assertTrue(foo is Bar)可能的话更“精确”

junit kotlin

7
推荐指数
2
解决办法
3482
查看次数

自定义HTML页面中的软键盘类型

当用户点击HTML页面中的文本输入字段时,有没有办法指定显示哪种软键盘布局(我只需要数字)?

我可以更改HTML页面和Javacode(我有一个嵌入WebView的活动).但是,如果我更改HTML代码,它必须不会影响其他平台(另一个浏览器/设备仍然应该正确解释输入字段并显示软键盘,而不一定只有数字键盘)

html android soft-keyboard

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

自定义DataMember名称以反序列化JSON类

我无法为属性指定自定义名称。我从服务器收到一些无法更改的JSON,但属性名称却很丑陋。我希望C#代码遵循命名约定。

下面是我的代码(result0.StringValue保持为空):

  [TestClass()]
  public class WebServiceResultConverterTest
  {
    [DataContract(Name = "SimpleObject")]
    private class SimpleObject
    {
        [DataMember(Name = "str_value")]
        public String StringValue { get; set; }

        [DataMember(Name = "int_value")]
        public String IntValue { get; set; }
    }

    [TestMethod()]
    public void DeserializeTest()
    {
        String input0 = @"{
          ""str_value"": ""This is a test string"",
          ""int_value"": 1664
        }";

        JavaScriptSerializer serializer = new JavaScriptSerializer();
        SimpleObject result0 = serializer.Deserialize<SimpleObject>(input0);

        Assert.AreEqual("This is a test string", result0.StringValue);
        Assert.AreEqual(1664, result0.IntValue);
    }
  }
Run Code Online (Sandbox Code Playgroud)

c# json datacontract datamember

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

Android OpenGL纹理:动态创建和删除它们

我目前正在实现一个3D查看器,它基本上呈现用户在SD卡上的所有图像的子集.我想到的最接近的匹配产品是CoolIris:

在此输入图像描述

它只是在屏幕上显示N个图块的滚动板,每个图块显示不同的图像,新的图块进入屏幕并显示新图像.

现在我的问题是:我让程序工作并且很好地渲染了四边形.当四边形离开屏幕时,它会被回收/释放.并且新的四边形在进入屏幕之前不断添加到瓷砖板.

因为可能有数百个图像,所以需要动态创建和删除纹理(这样我们就不会耗尽内存).我遇到的问题是,在删除纹理后,新创建的纹理似乎会获得当前正在使用的其他纹理的ID.

我的渲染循环如下所示:

void render(GL10 gl) {
  0. Move the camera

  // Tile board maintenance
  1. Remove tiles out of screen
  2. Add new tiles which are about to enter screen

  // Texture handling
  3. glDeleteTextures on all unused textures followed by glFlush
  4. For newly used images
     - Create corresponding Bitmap
     - Create the OpenGL texture, followed by glFlush
     - Release the Bitmap

  // Rendering
  5. Render the tile (using a textured quad)

}
Run Code Online (Sandbox Code Playgroud)

为了更好地了解数据的组织方式,以下是类的概述:

TileBoard { …
Run Code Online (Sandbox Code Playgroud)

android textures opengl-es loading

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

创建一个随时可用的symfony 2应用程序zip

我创建了一个symfomy应用程序包,可用于从Android应用程序收集崩溃报告(对于那些对Android和ACRA感兴趣的人:https://github.com/marvinlabs/acra-server).

那些可以使用它的人可以简单地将该应用程序安装为常规的Symfony 2软件包,从GitHub获取并执行所需的所有命令行工作我希望人们能够非常简单地安装该应用程序而不需要:

  • 任何symfony的知识
  • 需要访问php composer
  • 需要输入任何php命令行

为此,我打包了一个包含整个Symfony代码+我的包的zip文件.问题:似乎找不到CSS和Javascripts,我仍然需要在服务器上运行命令:

php app/console assetic:dump --env=prod --no-debug
Run Code Online (Sandbox Code Playgroud)

问题1:我怎么能摆脱最后一步?

问题2:总的来说,在制作zip文件之前,你会在我的流程中添加什么?


在制作该zip文件之前,我就是这样做的:

  • 删除所有git文件夹
  • 删除我的app/config/parameters.yml文件(特定于我的开发环境)

我还执行以下命令:

php app/console cache:clear --env=dev
php app/console cache:clear --env=prod
php app/console doctrine:schema:create --env=dev --dump-sql > create-schema.sql
php app/console doctrine:schema:update --env=dev --dump-sql > update-schema.sql
php app/console assets:install --env=prod --no-debug
php app/console assetic:dump --env=prod --no-debug
Run Code Online (Sandbox Code Playgroud)

PS:


要为尝试排除故障的人安装说明:

  1. 下载http://www.vincentprat.info/tmp/acra-server-1.0.0.zip
  2. 上传服务器上的zip内容
  3. 将权限777授予目录app/logs和app/cache
  4. 从示例文件app/config/parameters.yml.dist创建文件app/config/parameters.yml
  5. 在create-schema.sql文件的帮助下创建数据库表
  6. 使您的(子)域指向acra-server/web目录
  7. 访问主页:http://www.example.com/dashboard

编辑12/06/2013 …

deployment assets symfony assetic

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

用于数组验证的 Laravel 自定义属性名称

在复杂的形式中,我们需要为数组构建一些验证规则,这些规则应该仅在基于每个项目数据的某些复杂逻辑上触发。

\n

数组验证的定义方式通常是这样的

\n
   $validator->sometimes(\n      "items.*.level",\n      \'required|int|min:0\',\n      fn($formData) => /* $formData is the whole form data, not for the current item */\n   );\n
Run Code Online (Sandbox Code Playgroud)\n

然而,如上所示,确定何时触发这些规则的闭包对于表单数据是全局的,而不是对于项目的数据。

\n

因此,我们动态地为每个项目添加规则,如下所示:

\n
foreach ($formData as $itemId => $itemData) {\n   $validator->sometimes(\n      "items.$itemId.level",\n      \'required|int|min:0\',\n      fn() => $itemData[\'type\'] === 123 && $itemData[\'category\'] > 30\n   );\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我们必须这样做,因为据我所知,无法定义仅查看相应项目数据的有时规则。

\n

一切都很好。我们遇到的一个问题是验证消息的翻译。我们在validation.php文件中有:

\n
\'attributes\' => [\n    \'items.*.level\' => \'Niveau\',\n]\n
Run Code Online (Sandbox Code Playgroud)\n

那不会被拾取。显示的消息仍然是 \xc2\xab 字段 items.12.level 是必需的 \xc2\xbb 而不是 \xc2\xab 字段 Niveau 是必需的 \xc2\xbb 。

\n

有什么方法可以让验证器选择最接近的匹配属性名称并让*占位符按其应有的方式运行吗?

\n

validation laravel

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