【问题标题】:multiple elements within same drawable同一个drawable中的多个元素
【发布时间】:2014-09-18 12:18:51
【问题描述】:

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

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

任何帮助将不胜感激!

乔治。

【问题讨论】:

标签: android imageview drawable


【解决方案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;

     }

}

【讨论】:

  • 完美!这正是我需要的:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-18
  • 2012-08-13
  • 1970-01-01
  • 2012-01-06
  • 1970-01-01
相关资源
最近更新 更多