How to add a TextView to a GridView in Android

前端 未结 2 648
我寻月下人不归
我寻月下人不归 2020-12-18 05:34

I already know how to add String\'s to a gridView in android however I want to add textviews to format the text( Gravity, color, etc). This is my current code:



        
相关标签:
2条回答
  • 2020-12-18 05:52

    try it with something like this

    gridview.xml

    <?xml version="1.0" encoding="utf-8"?>
    <GridView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/gridView1"
        android:numColumns="auto_fit"
        android:gravity="center"
        android:columnWidth="100dp"
        android:stretchMode="columnWidth"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
    </GridView>
    

    item.xml

    <TextView
        android:id="@+id/grid_item_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@+id/label"
        android:layout_marginTop="5px"
        android:textSize="15px" >
    </TextView>
    

    Custom adapter class for textView

    public class TextViewAdapter extends BaseAdapter {
            private Context context;
            private final String[] textViewValues;
    
            public TextViewAdapter(Context context, String[] textViewValues) {
                this.context = context;
                this.textViewValues = textViewValues;
            }
    
            public View getView(int position, View convertView, ViewGroup parent) {
    
                LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    
                View gridView;
    
                if (convertView == null) {
    
                    gridView = new View(context);
    
                    // get layout from mobile.xml
                    gridView = inflater.inflate(R.layout.item, null);
    
                    // set value into textview
                    TextView textView = (TextView) gridView
                            .findViewById(R.id.grid_item_label);
                    textView.setText(textViewValues[position]);  
                } else {
                    gridView = (View) convertView;
                }
    
                return gridView;
            }
    
            @Override
            public int getCount() {
                return textViewValues.length;
            }
    
            @Override
            public Object getItem(int position) {
                return null;
            }
    
            @Override
            public long getItemId(int position) {
                return 0;
            }
    
        }
    

    and then , finally set adapter in your main class

    gridView.setAdapter(new TextViewAdapter(this, YOUR_ARRAY_WITH_TEXT_FOR_TEXTVIEWS));
    

    also note that you can pass any other values like color of text and as another argument in constructor and then set them in adapter like ...

    textView.setColor(textViewColors[position]); 
    

    for attributes that all textview have in common you can change the item.xml only :) i hope it helped you ....

    0 讨论(0)
  • 2020-12-18 06:01

    Simply do name.getText() and you're done!

    0 讨论(0)
提交回复
热议问题