使用background属性自定义TextView XML Drawable

时间:2015-07-10 09:26:24

标签: android xml textview drawable

我使用的是横向ListView(列表仅包含TextView),现在我想使用 xml drawable 在列表下方显示line项目user taps

正如我们通常在Sliding Tabs中使用的那样,请查看下面的屏幕截图,在此示例中,用户选择了 Tab1 Tab2 & ; Tab3 处于正常状态。

enter image description here

同样地,我希望实现我的custom drawable以便与我的TextView实现相同的效果,为此,我正在关注this链接。

但我仍然没有取得任何成功,请参阅我的TextView的属性:

<TextView
    android:text="@string/app_name"
    android:layout_height="wrap_content"
    android:id="@+id/textView1"
    android:layout_width="wrap_content"        
    android:layout_margin="5dp"
    android:textColor="#000000"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:background="@drawable/custom_textview"
    android:ellipsize="marquee" />

custom_textview.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true">
        <layer-list>
            <item>
                <shape>
                    <solid android:color="#ffff7a00" />
                </shape>
            </item>
            <item android:bottom="3dp">
                <shape>
                    <solid android:color="#222222" />
                </shape>
            </item>
        </layer-list>
    </item>
</selector>

2 个答案:

答案 0 :(得分:0)

使用此代码替换您的custom_textview.xml

    var lbl : UILabel = UILabel(frame: CGRectMake(225, 5, 20, 20))
    lbl.layer.borderColor = UIColor.whiteColor().CGColor
    lbl.layer.borderWidth = 2
    lbl.layer.cornerRadius = lbl.bounds.size.height/2
    lbl.textAlignment = NSTextAlignment.Center
    lbl.layer.masksToBounds = true
    lbl.font = UIFont(name: hereaddyourFontName, size: 13)
    lbl.textColor = UIColor.whiteColor()
    lbl.backgroundColor = UIColor.redColor()
    lbl.text = "1"  //if you no need remove this

    // add subview to tabBarController?.tabBar
    self.tabBarController?.tabBar.addSubview(lbl)

答案 1 :(得分:0)

你可以使用简单的逻辑来做到这一点 创建row.xml

<LinearLayoutadd attributes with orientation vertical>
<TextView/>
<View android:id="@+id/checkId/>
</LinearLayout/>

创建模型(POJO)

public class MyModel{
String name;
boolean isChecked;
public MyModel(String name,boolean isChecked){
this.name=name;
this.isChecked = isChecked;
}
//apply getters and setters
}

现在创建适配器 在你的getView方法中 检查值isChecked是true还是false如果为true,则设置id为checkId的视图的背景颜色,否则将其更改为白色

现在转到OnItemClickListener 使用for循环来确保单击了哪个项目

for(int i = 0 ;i < youlist.size;i++){
yourlist.get(i).setIsChecked(false);
}
yourlist.get(positionoflistitem).setIsChecked(true);
youradapter.notifyDataSetChanged();

你完成了