当前位置: 首页 > 知识库问答 >
问题:

如何将xml膨胀为没有父视图的自定义视图

水昊阳
2023-03-14
view = LayoutInflater.from(context).inflate(R.layout.alarm_handling, this);
public class AlarmView extends ViewStub{ //could work if ViewStub wasn't final

public AlarmView (Context context, AttributeSet attrs) {
    super(context);

    //using methods from ViewStub:
    setLayoutResource(R.layout.alarm_handling);
    inflate();
}
}

那么如何对此?要扩展什么才能只调用setContentView()或setLayoutResource()?

我看了很多这样的答案,但没有一个符合我的问题。

共有1个答案

司徒钱青
2023-03-14

据我所知,你想要应用的技巧和你想要的有点不同。

No ViewStub不是解决方案,因为ViewStub有一种非常不同的方式来处理一切。

为了示例的需要,让我们假设您的XML布局如下所示(不完整,只是为了展示其思想):

<FrameLayout match_parent, match_parent>
     <ImageView src="Myimage", wrap_content, Gravity.LEFT/>
     <TextView text="hello world", wrap_content, Gravity.CENTER_HORIZONTAL/>
</FrameLayout>
<merge match_parent, match_parent>
     <ImageView src="Myimage", wrap_content, Gravity.LEFT/>
     <TextView text="hello world", wrap_content, Gravity.CENTER_HORIZONTAL/>
</merge>
public class MyWidget extends FrameLayout
   // and then on your initialisation / construction
   LayoutInflater.from(context).inflate(R.layout.alarm_handling, this);
 类似资料:
  • 我有一个片段,我在其中膨胀“Fragment\u board.xml”: 如您所见,fragment\u board包含一个自定义视图“BoardView”,我想从中加载以下“view\u board.xml”: 我的自定义视图包含两个滚动视图(我使用它进行平移),我希望能够在其他布局中重复使用它。BoardView扩展了外部(垂直)滚动视图,如下所示: 当我独立使用它时,它会膨胀得很好,我可以在

  • 我试图在我的应用程序上实现谷歌登录。 工作正常,但当我尝试登录时,我的logcat上出现以下错误: 2018-10-04 14:55:14.784 16313-16313/? I/AppCompatDelegate:无法实例化自定义视图充气器android。支持v7。应用程序。这是充气机。回到违约状态。JAVAlang.ClassNotFoundException:android。支持v7。应用程

  • 还有人觉得这有点令人沮丧或有什么建议吗?从基类中膨胀相同的布局似乎并不罕见。

  • 在我的应用程序中,我有一个滚动视图。在应用程序的生命周期中,我会动态地向滚动视图添加新视图。我可以添加很少问题的视图,但我不能得到正确的尺寸。下面是我想要的布局草图: 在图像中,我有一个尺寸为和的屏幕。它包含一个(或者可能是一个,但我不确定如何使用它),当向它添加视图时,该视图将会增长。我希望添加到视图中的每个项目的宽度等于屏幕高度的五分之一,并且具有匹配的高度。我可以使这工作,如果我硬编码的宽度

  • 当获得Release apk时,我会在应用程序的所有活动中获得此错误日志 null 谢谢你。

  • 我不明白将布局附加到根视图组的目的,它是布局的一部分。为什么不使用attachToRoot标志为false: 顺便说一句,我的自定义toast消息可以正常工作,即使我省略了根视图并使用'null'作为第二个参数调用culflate。我明白这可能会在评估LayoutParams时引起一些问题,但我看不到任何问题。