有没有办法让全局访问单个View(在本例中为TextView)?我尝试将TextView放在它自己的XML文件中,如下所示:
<!-- File: list_header.xml -->
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium">
</TextView>
但是,在尝试访问此TextView时(使用mListHeader = (TextView) findViewById(R.id.list_header)
),我收到了null
。
我认为我似乎是使用这种方法的一些例子,所以我认为它应该是可能的。如果没有,我很乐意在找到另一种方法时获得一些帮助。
也许这个问题应该另外标注,因为我的主要问题是如何解决一个特定的问题:
有问题的TextView应该用作ListView中的标题。此标头将用于许多ListView,因此我想使用XML设置它的属性。我可以将它放在与ListView相同的XML文件中,但我不希望TextView以任何其他方式显示为ListView的标题。解决问题的一种方法是将TextView放在它自己的XML文件中,正如我试图做的那样,但它没有用。
现在,我不确定Stack Overflow在这种情况下的做法,但无论如何,我想要回答这两个问题。
答案 0 :(得分:1)
尝试使用&lt; include /&gt;或者&lt; merge /&gt;在布局中使用多个布局中的单个控件定义。有一个包含here的教程。
答案 1 :(得分:0)
对视图进行充气并将其添加为ListView中的标题:
View header = getLayoutInflater().inflate(R.layout.list_header, null);
list.addHeaderView(header);
BaseAdapter adapter = getAdapter();
list.setAdapter(adapter); //the header view must be added before you set the adapter
答案 2 :(得分:0)
您收到空,因为您尝试查找的ID View
不在您使用setContentView
设置的视图层次结构中。
因此,您有两个选择:
<include />
标记将您想要的布局包含在使用setContentView
LayoutInflater
对View
进行充气,并将其添加到setContentView
使View
对象本身(不是布局)全局可访问,即将其放在static
字段中,将导致内存泄漏。