小编tom*_*nor的帖子

检测Groovy每个{}闭包内的第一个和最后一个项目

我正在使用Groovy的方便的MarkupBuilder从各种源数据构建HTML页面.

我正在努力做的一件事是构建一个HTML表并将不同的样式类应用于第一行和最后一行.这可能是最好的例子......

table() {
  thead() {
    tr(){
      th('class':'l name', 'name')
      th('class':'type', 'type')
      th('description')
    }
  }
  tbody() {
    // Add a row to the table for each item in myList
    myList.each {
      tr('class' : '????????') {
        td('class':'l name', it.name)
        td('class':'type', it.type)
        td(it.description)
      }
    }
  }   
}
Run Code Online (Sandbox Code Playgroud)

在本<tbody>节中,我想<tr>根据当前项目myList是第一项还是最后一项来将元素的类设置为不同的类.

是否有一个很好的Groovy-ified方法来做到这一点,而不是使用手动来检查项目索引与列表大小使用类似的东西eachWithIndex{}

html groovy closures markupbuilder

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

以编程方式添加的RadioButtons拒绝服从LayoutParams加权

我正在尝试RadioGroup在Android布局中创建一个子RadioButton布料,它可以拉伸到均匀地填充整个宽度RadioGroup.但是,我尝试使用RadioButton已经从代码中以编程方式添加的s 来执行此操作时遇到了一些意外行为.首先是一些背景......

什么的工作

我从一个基于a的简单布局开始,RelativeLayout它包含一个大TextView而一个RadioGroup底部.

main.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="fill_parent" >
    <TextView android:text="Some text"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_alignParentTop="true"
        android:layout_above="@+id/radio_group"
        android:gravity="center"
        android:background="@android:color/holo_green_dark"
        />      
    <RadioGroup android:id="@+id/radio_group"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal"
        android:background="@android:color/holo_blue_dark">         
        <RadioButton android:text="Option 1"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_weight="1"
            android:background="@android:color/darker_gray"
            android:button="@android:color/transparent"
            android:padding="10dp"
            android:gravity="center"
            android:layout_margin="2dp"/>   
        <RadioButton android:text="Option 2"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_weight="1"
            android:background="@android:color/darker_gray"
            android:button="@android:color/transparent"
            android:padding="10dp"
            android:gravity="center"
            android:layout_margin="2dp"/> 
    </RadioGroup>       
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

在运行时生成以下布局:

均匀分布的单选按钮

您可以看到使用android:layout_width="wrap_content"android:layout_weight="1"在两者中RadioButton拉伸它们均匀地填充 …

user-interface android android-widget android-listview

19
推荐指数
2
解决办法
8643
查看次数

当为给定的URI调用ContentResolver.notifyChange()时,ContentObservers是否会通知此URI的后代URI?

一个有希望直截了当的问题:当ContentResolver.notifyChange()为某个给定URI调用时,是否会ContentObserver观察到此URI的后代 URI?

例如,假设我有一个游标设置来观察特定资源的URI:

 Uri uriA = Uri.parse("content://" + AUTHORITY + "/orders/21");
 cursor.setNotificationUri(getContext().getContentResolver(), uriA);
Run Code Online (Sandbox Code Playgroud)

然后我通知ContentResolver更改此URI的祖先(例如,因为我删除了所有订单):

 Uri uriB = Uri.parse("content://" + AUTHORITY + "/orders");
 getContext().getContentResolver().notifyChange(uriB, null);
Run Code Online (Sandbox Code Playgroud)

我的Cursor注册观察uriA会被通知吗?

android uri android-contentresolver android-contentprovider contentobserver

16
推荐指数
2
解决办法
9001
查看次数

如何在重绘任何子视图时触发父视图的重绘?

背景

我已根据LinearLayout我调用的内容编写了一个自定义Android视图ReflectingLayout.这个想法相当简单,在下面声明的任何子视图下面呈现反射效果ReflectingLayout.例如..

像这样的东西

我通过重写实现这一目标dispatchDraw()ReflectingLayout,如下所示:

@Override
protected void dispatchDraw(Canvas canvas) {

  Bitmap bitmap = Bitmap.createBitmap(...); 
  Canvas tempCanvas = new Canvas(bitmap);

  // Draw child views to bitmap using tempCanvas
  super.dispatchDraw(tempCanvas);

  ...
  // some tranformations performed on bitmap
  ...

  // draw transformed image on to main canvas
  canvas.drawBitmap(bitmap, 0, 0, null);
}
Run Code Online (Sandbox Code Playgroud)

问题

如果我ReflectingLayout包含,比方说,a TextView和我更改TextView了反射效果未更新的文本内容.

我相信这是因为Android只会重绘TextView自身而不是所有父视图,这意味着我的重写dispatchDraw()方法不会被调用.

是否有任何简单的方法可以触发重绘父视图以响应其中任何子视图的更改?

特别是,ReflectingLayout当重新绘制子视图时,如何重新绘制?

我已经考虑过的事情

  • 我注意到View.OnLayoutChangeListener在API级别11中添加了一个新的.据推测,这可以用于将回调注册到父视图并触发重绘(?).无论如何,我需要一个适用于API Level …

user-interface android android-widget android-layout

11
推荐指数
1
解决办法
6028
查看次数

为什么我无法登录从Android原生应用程序测试Facebook用户帐户?

我正在编写一个Android应用程序,它利用Facebook进行身份验证.为了测试这个,我编写了一个脚本,使用Facebook文档中提供的指南创建了许多测试用户帐户.

每个测试用户帐户都附带一个虚假的电子邮件地址和密码.可以使用这些详细信息通过主Facebook站点登录每个测试帐户.到目前为止都很好.

但是,如果我尝试使用Facebook原生Android应用程序上的这些详细信息登录我的任何测试用户帐户,或者甚至通过m.facebook.com移动网站,我会得到一个通用的"登录时发生错误.请尝试稍后再试." 错误.

还有其他人经历过这个吗?我需要在某个地方打勾,以便让这些测试用户能够访问移动应用吗?或者是否限制测试帐户,以便无法在移动设备上使用它们?

有没有人有幸从移动设备登录测试用户帐户,特别是Android?

所有的想法和评论都非常感谢.

testing api android facebook login

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