2017-09-22 68 views
0

我有ListView我想這顯示與固定height.Items佈局自定義項目:根LinearLayout的ListView適用WRAP_CONTENT其項目在Android

<?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> 

通知固定的高度。 適配器類:

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:

some description 一些無用的細節告訴解析器它不是主要的代碼,並有沒有什麼可以添加arghhh。

+0

你怎麼想實際上你可以在這裏展示它!因此,我們可以清楚地瞭解您的問題。你的問題有點不清楚。 –

+0

我想列表項目的高度,因爲它在佈局中聲明不wrap_content – undefined

+0

如果我沒有錯,那麼你可以請嘗試這樣做。刪除高度作爲wrap_content,並在您的視圖中將其設置爲match_parent,即必須在列表視圖中顯示的視圖。不要在LinearLayout中對xml代碼中的視圖進行任何更改。這樣做,並告訴它是否正常工作 –

回答

1

在你的getView方法你應該誇大你的視圖通過父ViewGroup作爲根和falseattachToRoot參數。

inflater.inflate(R.layout.selector_menu_item_login, parent, false) 

這將允許您的項目層次結構的父項獲取一組LayoutParams值以按預期佈局。