【问题标题】:Android: Set the background of listview textAndroid:设置listview文本的背景
【发布时间】:2013-12-26 19:54:53
【问题描述】:

我需要为 this. 之类的一些文本行制作背景,如何更改代码以实现这一点?

我是否需要为列表视图扩展另一个基本适配器,如果需要,我应该怎么做?

代码:

 public View getView(int position, View convertView, ViewGroup parent) {


       View grid;
       if(convertView==null){
        grid = new View(context);
        grid = layoutInflater.inflate(R.layout.grid_layout, null); 
       }else{
        grid = (View)convertView; 
       }

       ImageView imageView = (ImageView)grid.findViewById(R.id.gridimage);

       TextView textView = (TextView)grid.findViewById(R.id.gridtext);
       imageView.setImageResource(mThumbIds[position]);
       textView.setText(mStringIds[position]);

       return grid; 
      }


        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_categories);

        lv = (ListView) findViewById(R.id.grid_list_view); //lv is global
        lv.setAdapter(simpleAdpt);

        lv.setOnItemClickListener(new OnItemClickListener(){

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                        long arg3) {
                    Intent sam = new Intent(CategoriesActivity.this, CategoriesActivity.class);
                    startActivity(sam);
                    System.out.println("on item click");

                }
        });

      public void makeList(String value) {

            String prekes_pav = null;   
            int prekes_kiekis = 0;


            switch (position) {
                case 0: 
                    prekes_pav = "fr_veg";
                    break;
                case 1:
                    prekes_pav = "meat_fish";
                    break;
                default:
                    prekes_pav = "No name";

            }
            if(listas.listContain("fr_veg"))
            {
                ///////// MAKE text background BLUE
            }

            listas.createItem(prekes_pav, value, null);
            simpleAdpt = new SimpleAdapter(this, listas.getList(), android.R.layout.simple_list_item_1, new String[] {prekes_pav}, new int[] {android.R.id.text1});
            lv.setAdapter(simpleAdpt);  
        }

网格 xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:orientation="vertical">
 <ImageView
  android:id="@+id/gridimage"
  android:layout_width="fill_parent"
  android:layout_height="40dp"/>
 <TextView
  android:id="@+id/gridtext"
  android:textColor="#FFFFFF"
  android:textSize="16dp"
  android:gravity="center"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"/>
</LinearLayout>

网格窗口 xml

<GridView 
    android:id="@+id/grid"
    android:paddingTop="20dp"
    android:layout_width="fill_parent" 
    android:layout_height="265dp"
    android:columnWidth="50dp"
    android:numColumns="4"
    android:verticalSpacing="15dp"
    android:horizontalSpacing="10dp"
    android:stretchMode="columnWidth"
    android:gravity="center"
    android:background="@drawable/bg_blue_gradient"
/>
 <Button
     android:id="@+id/cat_button_slide"
     android:layout_height="wrap_content"
     android:layout_width="60dp"
     android:layout_gravity="center"

     android:background="@drawable/tongue_down"
     android:onClick="selfDestruct" />

 <ListView android:id="@+id/grid_list_view" 
              android:layout_height="match_parent"
              android:layout_width="match_parent"
    />
</LinearLayout>

【问题讨论】:

  • 你的xml要改变什么属性?
  • grid_list_view 行的文本

标签: android android-layout listview colors background


【解决方案1】:

更改您的 grid.xml 以包含如下内容:

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#BBBBBB" />

【讨论】:

  • 这将改变文本背景吹动图标(苹果,鸡等),我需要更改红色箭头所在的背景(我需要在一些列表元素中为蓝色背景和其他应该有白色)i.stack.imgur.com/bX1yM.png
  • @user3082220 更新了答案。
【解决方案2】:

没有理由构建新的适配器。如果我误解了您要做什么,请告诉我,我会尽力提供帮助。

有两种方法可以做到这一点。一个是xml,一个是java:

内部网格窗口.xml

  <ListView android:id="@+id/grid_list_view" 
          android:background="#0000ff"
          android:layout_height="match_parent"
          android:layout_width="match_parent"
/>

或通过代码:

  lv = (ListView) findViewById(R.id.grid_list_view); //lv is global
  lv..setBackgroundColor(Color.parseColor("#0000ff"));
  lv.setAdapter(simpleAdpt);

【讨论】:

  • 这将改变整个列表视图的背景。我只需要更改特定的列表视图项目文本背景。例如这里的第一个列表项是蓝色背景,2-5 是白色背景,第 6 个是蓝色背景等等 -> i.stack.imgur.com/bX1yM.png ... 背景应该就地改变: if(listas.listContain("fr_veg" )) { ///////// 将文本背景设为蓝色 } 有可能吗? :)
  • 嗯。也许这个? jsharkey.org/blog/2008/08/18/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 2017-03-08
  • 1970-01-01
相关资源
最近更新 更多