小编Che*_*ron的帖子

适用于Android的Mono中的OnGlobalLayoutListener

任何人都可以用C#解释我这个Java代码,因为我使用Mono for Android?例如,我在Mono for Android中找不到OnGlobalLayoutListener.

在Android上它看起来像这样:

vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
    int newWidth, newHeight, oldHeight, oldWidth;

    //the new width will fit the screen
    newWidth = metrics.widthPixels;

    //so we can scale proportionally
    oldHeight = iv.getDrawable().getIntrinsicHeight();
    oldWidth = iv.getDrawable().getIntrinsicWidth();
    newHeight = Math.floor((oldHeight * newWidth) / oldWidth);
    iv.setLayoutParams(new LinearLayout.LayoutParams(newWidth, newHeight));
    iv.setScaleType(ImageView.ScaleType.CENTER_CROP);

    //so this only happens once
    iv.getViewTreeObserver().removeGlobalOnLayoutListener(this);
    }
});
Run Code Online (Sandbox Code Playgroud)

什么是Mono for Android等价物?

c# java android xamarin.android

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

有条件地结合可观察量

我有两个可观察者,一个IObservable<AlertData>和另一个IObservable<SoundRequestData>.AlertData包含一个属性Id,知道哪个SoundRequestData属于它.SoundRequestData只知道自己,并有一个Id可以与之相匹配的属性AlertData.

我想将这两种数据类型组合成一种新类型AlertDataViewModel.但是,我无法确定两个可观察数据中的数据顺序是否相同.我现在不关心输出中的顺序.

我要的是匹配AlertData与SoundRequestData.

我现在这样做的方式,虽然有效但很慢,但要等到其中一个观察者完成将所有数据提取到a中ObservableCollection.然后我启动另一个observable并匹配Id的.

有没有更好的方法呢?我想这可以表达为以下大理石图:

Imgur

所以a.id=1匹配3.id=1,b.id=2匹配4.id=2等等.

c# system.reactive

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

我应该使每个函数都是静态的,不接触成员变量吗?

将所有函数设置为静态且不触及类的成员变量的设计和性能影响是什么?

c++ static

4
推荐指数
1
解决办法
1071
查看次数

流星keydown不起作用

我正在使用meteor来更新数据库中的文档.但是keydown似乎没有用.这是代码.

Template.leaderboard.events({
    'keydown button.inc': function(evt) {
        if (evt.which === 39) {
            Players.update(Session.get("character"), {$inc: {score: 20}});
        }

        Players.update(Session.get("character"), {$inc: {score: 20}});
        //Players.update(Session.get("character"), {$set: {name: 'images/characters/ninja.png'}});
    },
    'keydown': function(evt) {
        if (evt.which === 37) {
            Players.update(Session.get("character"), {$inc: {score: -20}});
            //Players.update(Session.get("character"), {$set: {name: 'images/characters/ninjaleft.png'}});
        }
        Players.update(Session.get("character"), {$inc: {score: -20}});
    }
});
Run Code Online (Sandbox Code Playgroud)

为什么我的工作不起作用?

jquery keydown meteor

4
推荐指数
1
解决办法
2462
查看次数

当Activity从IntentFilter启动时,ViewModel为null

我正在尝试使用NFC和MvvmCross.所以我创建了一个IntentFilter如下所示:

[IntentFilter(new[]{"android.nfc.action.NDEF_DISCOVERED"}, 
    Categories = new[] {"android.intent.category.DEFAULT"},
    DataScheme = "bksv-resource", DataHost = "nmt")]
Run Code Online (Sandbox Code Playgroud)

在OnResume我正在寻找Intent类型的行动NfcAdapter.ActionNdefDiscovered.发生的是当发现NDEF时,创建Activity并使用里面的数据设置Intent.所有这一切都很好Activity,但是当想要使用MvxActivity或者问题时会出现问题MvxFragmentActivity.

问题是,当MvxActivity重新创建获取时,base.OnCreate()调用没有ViewModel返回并且没有给出任何理由,只显示如下输出:

mvx:Diagnostic:  6.09 Loading new ViewModel from Intent with Extras
mvx:Warning:  6.13 ViewModel not loaded for view ScanView
Run Code Online (Sandbox Code Playgroud)

我不完全确定如何ViewModel找到它View,但是,在这种情况下似乎找不到它.为什么会这样?我需要自定义应用程序启动吗?

xamarin.android android-activity mvvmcross

4
推荐指数
1
解决办法
731
查看次数

Xamarin Monodroid:WP7 => Android和自定义控制?

我正在使用Xamarin Monodroid将我的一些Windows Phone应用程序移植到Android.

我对Xamarin的东西很新,实际上只是买了一张牌照.

到目前为止,在AXML中重新创建XAML UI非常好,但我遇到了自定义控件的问题.

这就是我所说的自定义控件:

在.NET中,我通过创建继承自'UserControl'类的类创建了一堆控件,我创建了逻辑并设置了内容.然后我用'new my_control()'等创建新实例......

我的一些控件不是以这种方式创建的,而是通过定义XAML来创建UserControl,其中没有特定的逻辑,但是当我需要组合2个或更多控件时(例如,带有文本的彩色正方形,所以Rectangle + TextBlock)我再次需要做'new my_control()'并将其添加到XAML UI(Grid,ListBox,StackPanel等)中的某个位置.

我怎么能用Monodroid实现类似的东西?

提前致谢!

c# custom-view xamarin.android xamarin

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

获取字符串的(Android.Graphics)路径

我找不到任何方法来检索表示字符串的Path对象。是否存在?必要点的列表就足够了,但是我想在内部使用一条路径。

例如,在GDI +中有:

GraphicsPath p = new GraphicsPath(); 
p.AddString("string");
Run Code Online (Sandbox Code Playgroud)

从那里可以访问和修改“绘制的字符串”的任何点。

PS:我并不是说要沿着路径绘制文本。

fonts android canvas xamarin.android

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

从堆栈中删除ViewController

在我们的应用程序中,我们有一个登录ViewController A.在用户登录时,会自动调用请求导航以导航到下一个ViewController B.然而,当这样做,我们要删除的登录ViewController A从堆栈,使用户不能"回头"的登录观点,但追溯到以前的ViewController前登录代替.

我们考虑过ViewController A在ViewController B加载时从堆栈中删除它,但是有更好的方法吗?

在我们设置的Android版本的应用程序history=no(如果我没记错),然后它的工作原理.

是否有类似的方法在MonoTouch和MvvmCross中实现这一目标?

stack uiviewcontroller xamarin.ios mvvmcross

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

检索设备的IP地址

我正在使用Xamarin.Android并编写以下代码:

public TextView text;
text = FindViewById<TextView>(Resource.Id.viewIP);
foreach (IPAddress adress in Dns.GetHostAddresses(Dns.GetHostName()))
{
    text.Text = "IP Adress: " + adress;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我打开应用程序时,它会立即关闭.我使用正确的方法来获取设备的IP地址吗?

c# ip-address xamarin.android xamarin

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

Xamarin.Android从ListView单击事件中获取对象属性

我是C#(几周)和Xamarin(大约一周)的新手.

我能够从教程"在Android上的ListView中显示实体集合"(//来自http://diptimayapatra.wordpress.com/2013/07/08/xamarin-display-entity-collection-in-listview)实现ListView适配器-in-android /)

我现在的问题是我不知道如何处理TextView文本上的click事件.

我的适配器的GetView代码是:

public override  View GetView(int position, View convertView, ViewGroup parent)
{
    var incident = incidents[position];
    View view = convertView;
    if(view == null)
    {
        view = context.LayoutInflater.Inflate(
            Resource.Layout.ListViewTemplate, null);
    }

    view.FindViewById<TextView>(Resource.Id.tvIncident).Text = 
        string.Format("{0}", incident.title);

    view.FindViewById<TextView>(Resource.Id.tvIncidentDescription).Text = 
        string.Format("{0}", incident.description);

    return view;
}
Run Code Online (Sandbox Code Playgroud)

我的事件对象代码是:

public class Incident
{
   public int id {get; set;}
   public string title {get; set;}
   public string description {get; set;}
   public double latitude {get; set;}
   public double longitude {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

然后活动中的代码是 …

c# listview xamarin.android xamarin

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