如何只更改BuiltInView的一个属性?

时间:2015-04-06 08:51:59

标签: android listview xamarin

我是Xamarin Android初学者。在我写的应用程序中,我使用RadioGroup创建了一个Activity,并在其下面创建了一个按钮。

一切都很好,直到我的收音机按钮包含太多文字,收音机组从电话屏幕上移开,按钮被隐藏。

所以,我在网上搜索,发现我可以将RadioGroup设为可滚动,使其成为ListView,并将ListView设置在按钮上方。

此外,我发现Xamarin Android提供了BuiltInView SimpleListItemSingleChoice,这是一个现成的无线电组作为ListView。

所以,我实现了这一点,一切都很好,除了BuiltInView的每个Item中的文本字段被缩短(即我的单选按钮选项)。

我想应用属性

android:layout_height="wrap_content"

这样我的单选按钮的长文本标签就不会被缩短。

我的问题是,如何将其应用于BuiltInView的每个项目?

我试图定义自己的自定义视图,但是在尝试使其可检查时遇到了问题,所以我想知道是否有一种更简单的方法可以通过使用已经提供的BuiltInView来解决问题。

在MyListAdapter GetView中,我有

view = (context.LayoutInflater.Inflate(Android.Resource.Layout.SimpleListItemSingleChoice, parent, false));

在我的活动中,我有

myListAdapter = new Adapters.MyListAdapter(this, myStrings, false);
myListView.Adapter = myListAdapter;

1 个答案:

答案 0 :(得分:0)

由于BuiltInView不提供xml文件(或者我不知道在Xamarin中访问它的位置),我将以下代码添加到自定义适配器的GetView方法中:

        var textLabel = view.FindViewById<TextView>(Android.Resource.Id.Text1);

//I added these 2 lines to set the WrapContent property on each element of the BuiltInView
        AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(AbsListView.LayoutParams.MatchParent,
                AbsListView.LayoutParams.WrapContent);
        textLabel.LayoutParameters = layoutParams;