2016-10-18 2 views
0

내 app에서 cardview로 사용자 정의 대화 상자를 만들고 싶습니다. Google에서 검색하여 동일하게 구현했지만 예상 결과를 얻지 못했습니다. 그래서 누군가 그것을 구현하는 데 나를 도울 수 있습니다.android에서 cardview로 사용자 정의 대화 상자를 만드는 방법

내가이 내 category.xml입니다 파일

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/layout_root" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:padding="10dp" 
> 
<RelativeLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:paddingTop="3dip" > 
    <ImageView android:id="@+id/close" 
     android:layout_width="30dip" 
     android:layout_height="30dip" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="3dp" 
     android:src="@drawable/ic_cancel_black_24dp" 
     /> 
    <TextView android:id="@+id/text1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_alignParentLeft="true" 
     android:layout_marginLeft="3dp" 
     android:textColor="#FFF" 
     android:textSize="20dip" 
     android:text="Choose Categories"/> 
</RelativeLayout> 

<GridView 
    android:id="@+id/gridview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:columnWidth="90dp" 
    android:numColumns="3" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center"/> 

result

을 얻고 그 결과이 내 있는 Custom.xml 파일

입니다
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:padding="10dp" 
> 
<ImageView android:id="@+id/categoryImage" 
    android:layout_width="50dip" 
    android:layout_height="50dip" 
    android:layout_alignParentRight="true" 
    android:layout_marginRight="3dp" 
    android:src="@drawable/ic_cancel_black_24dp"/> 
<TextView android:id="@+id/categoryText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="safsafsa" 
    android:layout_centerHorizontal="true" 
    android:layout_alignParentLeft="true" 
    android:layout_marginLeft="3dp" 
    /> 

그리고 이것은 내 MainActivity.java

public class MainActivity extends AppCompatActivity { 

public final int CATEGORY_ID =0; 
private Context mContext; 
Dialog dialog; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button button = (Button)findViewById(R.id.button1); 
    button.setOnClickListener(new Button.OnClickListener(){ 
     public void onClick(View v) 
     { 
      showDialog(CATEGORY_ID); 
     } 
    }); 
} 

protected Dialog onCreateDialog(int id) { 

    switch(id) { 

     case CATEGORY_ID: 

      AlertDialog.Builder builder; 
      Context mContext = this; 
      LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE); 
      View layout = inflater.inflate(R.layout.category,(ViewGroup) findViewById(R.id.layout_root)); 
      GridView gridview = (GridView)layout.findViewById(R.id.gridview); 
      gridview.setAdapter(new ImageAdapter(this)); 

      gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() 
      { 

       @Override 
       public void onItemClick(AdapterView<?> arg0, View arg1, 
             int arg2, long arg3) { 
        // TODO Auto-generated method stub 
        Toast.makeText(arg1.getContext(), "Position is "+arg2, Toast.LENGTH_LONG).show(); 
       } 
      }); 

      ImageView close = (ImageView) layout.findViewById(R.id.close); 
      close.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v){ 
        dialog.dismiss(); 
       } 
      }); 

      builder = new AlertDialog.Builder(mContext); 
      builder.setView(layout); 
      dialog = builder.create(); 
      break; 
     default: 
      dialog = null; 
    } 
    return dialog; 
} 

입니다 그리고 이것은 당신이로있는 Custom.xml을 변경해야 내 ImageAdapter.java

public class ImageAdapter extends BaseAdapter { 
     private Context mContext; 
     private LayoutInflater mInflater; 
     public ImageAdapter(Context c) { 
      mInflater = LayoutInflater.from(c); 
      mContext = c; 
     } 
     public int getCount() { 
      return mThumbIds.length; 
     } 
     public Object getItem(int position) { 
      return null; 
     } 
     public long getItemId(int position) { 
      return 0; 
     } 
     // create a new ImageView for each item referenced by the 
     public View getView(int position, View convertView, ViewGroup parent) { 
      ViewHolder holder; 
      if (convertView == null) { // if it's not recycled, 
       convertView = mInflater.inflate(R.layout.custom, null); 
       convertView.setLayoutParams(new GridView.LayoutParams(100,100)); 
       holder = new ViewHolder(); 
       holder.title = (TextView) convertView.findViewById(R.id.categoryText); 
       holder.icon = (ImageView)convertView.findViewById(R.id.categoryImage); 
       convertView.setTag(holder); 
      } else { 
       holder = (ViewHolder) convertView.getTag(); 
      } 
      holder.icon.setAdjustViewBounds(true); 
      holder.icon.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      holder.icon.setPadding(5, 5, 5, 5); 
      holder.title.setText(categoryContent[position]); 
      holder.icon.setImageResource(mThumbIds[position]); 
      return convertView; 
     } 
     class ViewHolder { 
      TextView title; 
      ImageView icon; 
     } 
     // references to our images 
     private Integer[] mThumbIds = { 
       R.drawable.ic_cancel_black_24dp, R.drawable.ic_cancel_black_24dp,R.drawable.ic_cancel_black_24dp, 
       R.drawable.ic_cancel_black_24dp,R.drawable.ic_cancel_black_24dp, R.drawable.ic_cancel_black_24dp 
     }; 

    } 
    private String[] categoryContent = { 
      "Pubs", "Restuarants","shopping", 
      "theatre","train", "taxi", 
    }; 


} 
+0

부모 레이아웃 대신있는 LinearLayout의 정의 행에 cardview한다있는 ​​gridview에이 같은 배경. –

답변

0

입니다 이

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="#FFFFFF" 
android:padding="10dp"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <ImageView 
     android:id="@+id/categoryImage" 
     android:layout_width="50dip" 
     android:layout_height="50dip" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="3dp" 
     android:src="@drawable/ic_cancel_black_24dp" /> 

    <TextView 
     android:id="@+id/categoryText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginLeft="3dp" 
     android:textColor="#000000" 
     android:text="safsafsa" /> 
</LinearLayout> 

android:background="#ffffff" 
+0

예. 알고 있습니다. 처음에는 카드보기없이 해 보았습니다. 그 결과를 얻지 못하고 있습니다. –

+0

backgrouned를 추가하려고 시도했는데 일부 점선 이미지가있는 대화 상자가 나타납니다. –

+0

현재 레이아웃 이미지를 표시 할 수 있습니까? –

관련 문제