rah*_*lrv 5 android android-recyclerview
我正在尝试在导航抽屉中创建一个recyclerview,其标题显示了配置文件信息.我希望标题高度高于其他行元素.下面是我的标题布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="@color/green"
android:orientation="vertical"
android:weightSum="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="56dp"
android:orientation="vertical"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:textColor="#ffffff"
android:text="XXXXX"
android:textSize="32sp"
android:textStyle="bold"
/>
</LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
当我将其设置为回收器视图的标题时,200dp高度不会反映在UI中
RecyclerView.Adapter<NavDrawerListViewHolder> adapter = new NavDrawerListAdapter(this,TITLES,this);
navList.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
以下是recyclerview的适配器:
public class NavDrawerListAdapter extends RecyclerView.Adapter<NavDrawerListViewHolder> {
private static final int TYPE_HEADER = 0;
private static final int TYPE_ITEM = 1;
Context mContext;
String[] mCharacterList;
IListItemClickListener mListener;
int holderViewType=0;
public NavDrawerListAdapter(Context context, String[] characters, IListItemClickListener clickListener) {
mContext = context;
mCharacterList = characters;
mListener = clickListener;
}
@Override
public NavDrawerListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
NavDrawerListViewHolder viewHolder;
holderViewType = viewType;
if(viewType == TYPE_HEADER) {
View v = LayoutInflater.from(mContext).inflate(R.layout.header,null);
viewHolder = new NavDrawerListViewHolder(v,TYPE_HEADER,mListener);
} else {
View v = LayoutInflater.from(mContext).inflate(R.layout.nav_item_row,null);
viewHolder = new NavDrawerListViewHolder(v,TYPE_ITEM,mListener);
}
return viewHolder;
}
@Override
public void onBindViewHolder(NavDrawerListViewHolder holder, int position) {
if(holderViewType == TYPE_HEADER) {
Typeface typeface = Typeface.createFromAsset(mContext.getAssets(), "Roboto-Thin.ttf");
holder.name.setTypeface(typeface);
} else {
holder.characterName.setText(mCharacterList[position - 1]);
}
}
@Override
public int getItemViewType(int position) {
if (position == 0) {
return TYPE_HEADER;
}
return TYPE_ITEM;
}
@Override
public int getItemCount() {
return mCharacterList.length + 1;
}
Run Code Online (Sandbox Code Playgroud)
Com*_*are 14
更换:
LayoutInflater.from(mContext).inflate(R.layout.header,null);
Run Code Online (Sandbox Code Playgroud)
有:
LayoutInflater.from(mContext).inflate(R.layout.header, parent, false);
Run Code Online (Sandbox Code Playgroud)
所有其他inflate()电话都一样.如果您知道要扩充的布局的父容器,请始终将其提供给inflate()呼叫.特别是,RelativeLayout如果它是被夸大的布局的根视图,则需要这个.
此外,考虑使用getLayoutInflater()的Activity替代LayoutInflater.from().这可能是因为,如果你通过Activity进入from(),你会得到相同的结果.但是,一般情况下,您总是希望使用LayoutInflater了解Activity其主题的内容,以便获得正确的结果.
| 归档时间: |
|
| 查看次数: |
9325 次 |
| 最近记录: |