Android开发—利用FrameLayout实现图标中间显示文字

需求:实现日历功能中的天数,在一个图标中显示当前日期的天数

先上效果图:

Android开发—利用FrameLayout实现图标中间显示文字

关键xml布局文件:

<FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_margin="4dp" >
  
        <ImageView
            android:id="@+id/itemImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="@android:drawable/ic_input_add" />
        <TextView 
            android:id="@+id/tvDays"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="#00000000"
            android:textColor="#FFFFFF"
            android:textSize="18sp"
            android:text="day"/>
    </FrameLayout>

其中android:layout_gravity="center" 让控件居中显示,android:background="#00000000"设置TextView背景完全透明(半透明:android:background="#e0000000")

 

Activity中对应代码:

    ImageView p_w_picpath = (ImageView)itemView.findViewById(R.id.itemImage);
   p_w_picpath.setImageResource(iconId);
   //设置p_w_picpath的padding
   p_w_picpath.setPadding(0, 0, 8, 0);
   TextView tvDay = (TextView)itemView.findViewById(R.id.tvDays);
   //只有当日的list图标中才显示天数
   if (iconId == R.drawable.today) {
    tvDay.setVisibility(View.VISIBLE);
    tvDay.setPadding(0, 0, 8, 0);
    tvDay.setText(currDay);
   }else{
    tvDay.setVisibility(View.INVISIBLE);
   }