Есть ли тег XML, эквивалентный «ListView.addHeaderView»?

Есть ли тег XML, который я могу использовать в файле макета, который эквивалентен ListView.addHeaderView() ?

Solutions Collecting From Web of "Есть ли тег XML, эквивалентный «ListView.addHeaderView»?"

Я написал простой ListView как ваше требование.

  1. Объявить пользовательский атрибут в attrs.xml в папке value :

     <resources> <declare-styleable name="HeaderListViewFromXML"> <attr name="headerView" format="reference"/> </declare-styleable> </resources> 
  2. Создайте HeaderListViewFromXML класс ListView

     public class HeaderListViewFromXML extends ListView { private int headerId; public HeaderListViewFromXML(Context context) { this(context, null); } public HeaderListViewFromXML(Context context, AttributeSet attrs) { this(context, attrs, 0); } public HeaderListViewFromXML(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.HeaderListViewFromXML, defStyle, defStyle); try { headerId = a.getResourceId(R.styleable.HeaderListViewFromXML_headerView, View.NO_ID); if (headerId != View.NO_ID) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View header = inflater.inflate(headerId, null); addHeaderView(header); } } finally { a.recycle(); } } } 
  3. Объявить пользовательский HeaderListViewFromXML в layout.xml

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <com.example.rewidget.HeaderListViewFromXML android:id="@+id/listWithHeader" android:layout_width="fill_parent" android:layout_height="150dp" android:layout_marginTop="60dp" android:background="#00FF00" // custom attribute. Point to layout in header1.xml app:headerView="@layout/header1" /> </RelativeLayout> 
  4. В действии используйте обычный ListView

     public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView list = (ListView) findViewById(R.id.listWithHeader); String[] values = new String[] { "Android", "iPhone", "WindowsMobile", "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2" }; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, values); list.setAdapter(adapter); } }