我有ListView
我希望显示固定高度的自定义项目。项目布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="200dp"
android:orientation="horizontal">
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyle"
android:layout_width="20dp"
android:layout_height="match_parent"
android:layout_gravity="center_vertical" />
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
app:srcCompat="@drawable/login_btn_facebook" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:text="TextView"
android:textColor="@color/gameMenuItem"
android:textSize="16sp"/>
</LinearLayout>
注意根LinearLayout
的固定高度。
适配器类:
public class SelectorMenuLoggedOutAdapter extends BaseAdapter {
public static final int ACTION_LOGIN_FACEBOOK=0;
public static final int ACTION_LOGIN_GOOGLE=1;
public static final int ACTION_FEEDBACK=2;
public static final int ACTION_RATE_US=3;
private LayoutInflater inflater;
private Context context;
public SelectorMenuLoggedOutAdapter(Context ctx) {
inflater=LayoutInflater.from(ctx);
context=ctx;
}
@Override
public int getCount() {
return 2;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View res=convertView;
if (res==null) {
switch (position) {
case 0:
res = inflater.inflate(R.layout.selector_menu_item_login,null);
((TextView)res.findViewById(R.id.title)).setText(context.getText(R.string.selector_menu_login_facebook));
((ImageView)res.findViewById(R.id.icon)).setImageResource(R.drawable.login_btn_facebook);
res.findViewById(R.id.progress).setVisibility(View.GONE);
break;
case 1:
res = inflater.inflate(R.layout.selector_menu_item_login,null);
((TextView)res.findViewById(R.id.title)).setText(context.getText(R.string.selector_menu_login_google));
((ImageView)res.findViewById(R.id.icon)).setImageResource(R.drawable.login_btn_google);
res.findViewById(R.id.progress).setVisibility(View.GONE);
break;
}
}
return res;
}
}
然而,当我将此适配器设置为我的列表视图时,它显示的行与layout_height = wrap_content一样:
答案 0 :(得分:1)
在您的getView
方法中,您应该通过父ViewGroup
作为根,并false
参数attachToRoot
来扩展您的观看次数。
inflater.inflate(R.layout.selector_menu_item_login, parent, false)
这将允许项目层次结构的父级获取一组LayoutParams值,以按预期布局自身。