以编程方式更改包括标记布局

时间:2018-05-11 19:55:07

标签: java android kotlin

我正在做一个Android项目,而我正试图弄清楚如何在布局中保持动态。

所以我有布局文件simple_card.xmlConstraintLayout,每个文件都包含一个complex_card标记,其中包含一些其他布局元素。 simple_cardcomplex_card占用更多空间,因此每当我有足够的空间时我都会使用simple_card,当我没有空间时可以切换回使用activity_main.xml

<include layout="R.layout.complex_card"/>中,我通过<include layout="R.layout.simple_card"/>标记使用了这两种布局。但是,实时,我希望能够将其更改为public interface INotificationChannel { Task Send(Message message); } public interface INotificationChannelEngine { void Process(Message message); } public class Message { public string Text; } public class MailNotificationChannel : INotificationChannel { public async Task Send(Message message) { //to be implemented } } public class FileNotificationChannel : INotificationChannel { public string Path = Common.Log; public async Task Send(Message message) { Logger.LogIt(message.Text, Path); await Task.Delay(0); } } public class ConsoleNotificationChannel : INotificationChannel { public string Path; public async Task Send(Message message) { Console.WriteLine(message.Text); await Task.Delay(0); } } //other notification channels.. public class NotificationChannelEngine : INotificationChannelEngine { private readonly IList<INotificationChannel> _notificationChannels; public NotificationChannelEngine() { _notificationChannels = new List<INotificationChannel>(); } public void RegisterNotificationChannel(INotificationChannel channel) { _notificationChannels.Add(channel); } public void Send(Message message) { foreach (var channel in _notificationChannels) channel.Send(message); } } 。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的工作。 simple_cardcomplex_card的轻量级版本,这意味着我可以使用view.visibility = View.GONEview.visibility = View.VISIBLE隐藏complex_card中与simple_card完全相同的某些布局}。

但是,如果存在2个完全不同的布局文件,则原始问题无法解决。