如何从XML定义片段的布局?

Mat*_*zen 19 java xml android

我正在尝试用XML定义片段的布局,就像我定义视图布局一样.

这可能吗?我尝试了几件事,但似乎都没有.

我的活动布局如下(main.xml):

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
  <fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="full.lommeregner.Lommeregnerrv2Activity"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/lommeregnerv2">
    </fragment>   

</ListView>
Run Code Online (Sandbox Code Playgroud)

现在,由于我不是通过原始Java代码生成布局的忠实粉丝,我尝试按如下方式定义我的片段(fragment_lommeregner.xml):

  <fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="full.lommeregner.Lommeregnerrv2Activity"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/lommeregnerv2">
       <!-- my content was located here (some textviews, buttons and so on). -->
    </fragment> 
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?如何通过XML定义片段的布局?

Oll*_*e C 16

Fragment的工作方式与活动非常相似,因为您需要一个Java类文件.你不能仅仅通过创建片段布局来创建片段 - 你需要一个片段类:

  1. 为您的活动创建布局XML和Activity子类
  2. 为片段创建布局XML和Fragment子类
  3. 在Activity布局XML中将两者绑定在一起(如果要在Java代码中执行,则使用FragmentTransaction)

如果您还没有这样做,请阅读,重新阅读并摘要此页面上的所有内容:https: //developer.android.com/guide/components/fragments.html

那里有很多,但片段是Android应用程序的重要组成部分,所以它需要阅读.好消息是碎片的基础非常简单.

  • 它们并非严格要求,但在许多情况下它们会让您的生活更轻松. (2认同)

Fir*_*enk 12

只需将您的<fragment>标记添加为属性:

tools:layout="@layout/your_layout_xml"
Run Code Online (Sandbox Code Playgroud)

并在main.xml(或<fragment>标记容器)中进入父容器(在本例中ListView):

xmlns:tools="http://schemas.android.com/tools"
Run Code Online (Sandbox Code Playgroud)

  • tools:layout 仅用于编辑器预览,与实际使用的布局无关。 (2认同)