2016-02-11 13 views
1

我试图以编程方式在片段中创建新的cardviews,并将它们添加到已经在xml中定义的线性布局。我尝试过这样做,卡片不出现。请帮忙。 cardviews not showing up in fragment如何在一个片段中制作多个cardviews

package com.example.jberroa.senior_design; 
import android.net.Uri; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v7.widget.CardView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.LinearLayout; 


/** 
* A simple {@link Fragment} subclass. 
* Activities that contain this fragment must implement the 
* {@link Overview.OnFragmentInteractionListener} interface 
* to handle interaction events. 
* Use the {@link Overview#newInstance} factory method to 
* create an instance of this fragment. 
*/ 


public class Overview extends Fragment { 
    // TODO: Rename parameter arguments, choose names that match 
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER 
    private static final String ARG_PARAM1 = "param1"; 
    private static final String ARG_PARAM2 = "param2"; 

    // TODO: Rename and change types of parameters 
    private String mParam1; 
    private String mParam2; 

    private OnFragmentInteractionListener mListener; 

    public Overview() { 
     // Required empty public constructor 
    } 

    /** 
    * Use this factory method to create a new instance of 
    * this fragment using the provided parameters. 
    * 
    * @param param1 Parameter 1. 
    * @param param2 Parameter 2. 
    * @return A new instance of fragment Overview. 
    */ 
    // TODO: Rename and change types and number of parameters 
    public static Overview newInstance(String param1, String param2) { 
     Overview fragment = new Overview(); 
     Bundle args = new Bundle(); 
     args.putString(ARG_PARAM1, param1); 
     args.putString(ARG_PARAM2, param2); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (getArguments() != null) { 
      mParam1 = getArguments().getString(ARG_PARAM1); 
      mParam2 = getArguments().getString(ARG_PARAM2); 
     } 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     // Inflate the layout for this fragment 
     View v=inflater.inflate(R.layout.fragment_overview, container, false); 
     CardView.LayoutParams params = new CardView.LayoutParams(
       CardView.LayoutParams.WRAP_CONTENT, 
       180); 
     params.setMargins(10,10,10,100); 
     LinearLayout l = (LinearLayout)v.findViewById(R.id.ov); 

     for (int i =0;i<10;i++) { 
      CardView valueTV = new CardView(container.getContext()); 
      valueTV.setLayoutParams(params); 
      l.addView(valueTV); 
     } 

     return v; 
    } 

    // TODO: Rename method, update argument and hook method into UI event 
    public void onButtonPressed(Uri uri) { 
     if (mListener != null) { 
      mListener.onFragmentInteraction(uri); 
     } 
    } 


    @Override 
    public void onDetach() { 
     super.onDetach(); 
     mListener = null; 
    } 

    /** 
    * This interface must be implemented by activities that contain this 
    * fragment to allow an interaction in this fragment to be communicated 
    * to the activity and potentially other fragments contained in that 
    * activity. 
    * <p> 
    * See the Android Training lesson <a href= 
    * "http://developer.android.com/training/basics/fragments/communicating.html" 
    * >Communicating with Other Fragments</a> for more information. 
    */ 
    public interface OnFragmentInteractionListener { 
     // TODO: Update argument type and name 
     void onFragmentInteraction(Uri uri); 
    } 
} 

回答

0

更换

CardView.LayoutParams params = new CardView.LayoutParams(
      CardView.LayoutParams.WRAP_CONTENT, 
      180); 

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
        180); 

如果里面有cardview没有内容,然后在 “WRAP_CONTENT” 大小变成0。这就是为什么cardview不考虑

显示
+0

边距未应用于卡片。这是为什么发生? – Smeekheff

+0

请将CardView.LayoutParams替换为LinearLayout.LayoutParams – Sabari

+0

我已经更新了上面的代码。 – Sabari

相关问题