同一个drawable中的多个元素

时间:2014-09-18 12:18:51

标签: android imageview drawable

我试图在一个Drawable中添加几个项目,这些项目将在GridView中使用: - 文本在drawable的中心对齐 - 在背景图像 - 以编程方式可变数字(0-3)的图像(星形)水平对齐在可绘制的底部。

我怎么能做到这一点呢? 目前我正在尝试使用自定义ImageView并使用setImageResource设置背景图像。另一种方法是使用TextView,但我仍然不知道底部的星星。

任何帮助将不胜感激!

乔治。

1 个答案:

答案 0 :(得分:1)

你不是指Drawable,你的意思是说View。您只需找到一个关于为AdapterView(ListView,GridView,...)制作自定义视图的体面教程。

一个让你入门的教程是http://www.learn-android-easily.com/2013/09/android-custom-gridview-example.html

快速转储代码:

main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

   <GridView
        android:id="@+id/gridViewCustom"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="4dp"
        android:columnWidth="80dp"
        android:gravity="center"
        android:numColumns="auto_fit"
        android:stretchMode="columnWidth" />


</RelativeLayout>

grid_row.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="5dp" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_marginRight="10dp"
        android:src="@drawable/ic_launcher" >
    </ImageView>

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:textSize="15sp" >
    </TextView>

</LinearLayout>

CustomGridViewMainActivity.java

public class CustomGridViewMainActivity extends Activity 
{


            GridView gridView;
            GridViewCustomAdapter grisViewCustomeAdapter;


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


                    gridView=(GridView)findViewById(R.id.gridViewCustom);
                    // Create the Custom Adapter Object
                    grisViewCustomeAdapter = new GridViewCustomAdapter(this);
                    // Set the Adapter to GridView
                    gridView.setAdapter(grisViewCustomeAdapter);

                    // Handling touch/click Event on GridView Item
                      gridView.setOnItemClickListener(new OnItemClickListener() {

                       @Override
                       public void onItemClick(AdapterView<?> arg0, View v, int position, long arg3) {
                           String selectedItem;
                           if(position%2==0)
                               selectedItem="Facebook";
                           else
                               selectedItem="Twitter";
                        Toast.makeText(getApplicationContext(),"Selected Item: "+selectedItem, Toast.LENGTH_SHORT).show();

                       }
                      });


               }

}

GridViewCustomAdapter.java

public class GridViewCustomAdapter extends ArrayAdapter
{
         Context context;



     public GridViewCustomAdapter(Context context) 
     {
             super(context, 0);
             this.context=context;

     }

     public int getCount() 
        {
                     return 24;
        }

     @Override
     public View getView(int position, View convertView, ViewGroup parent) 
     {
             View row = convertView;

             if (row == null) 
             {
                     LayoutInflater inflater = ((Activity) context).getLayoutInflater();
                     row = inflater.inflate(R.layout.grid_row, parent, false);


                     TextView textViewTitle = (TextView) row.findViewById(R.id.textView);
                     ImageView imageViewIte = (ImageView) row.findViewById(R.id.imageView);

                     if(position%2==0)
                     {
                             textViewTitle.setText("Facebook");
                             imageViewIte.setImageResource(R.drawable.facebook);
                     }
                     else
                     {
                             textViewTitle.setText("Twitter");
                             imageViewIte.setImageResource(R.drawable.twitter);
                     }
             } 



      return row;

     }

}