2015-07-10 60 views
3

我使用水平ListView自定义的TextView XML绘制对象(名单只是一个TextView含),现在我想用一个XML绘制下面的列表项的任何user taps显示line与底色财产

正如我们在Sliding Tabs正常使用,检查下面截图,在该示例用户已经选择TAB1,和TAB2 & TAB3处于正常状态。

enter image description here

在相同的方式,我想实现我的TextViewcustom drawable得到同样的效果,并得到那个,我下面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> 
+0

哪些类型的标签使用的是?设计库或TabHost或TabLayout? –

+0

兄弟我没有使用任何标签?再次阅读我的问题 – Oreo

+0

哦,对不起,我知道了...... –

回答

0

替换您custom_textview.xml,与此代码

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <solid android:color="#ffff7a00" /> 
     </shape> 
    </item> 

    <item 
     android:bottom="2dp"> 
     <shape android:shape="rectangle"> 
      <solid android:color="#222222" /> 
     </shape> 
    </item> 
</layer-list> 
+0

但我得到的每一个列表项目,而我只是想显示与选定的一个,如: - Tab1在上面的屏幕 – Oreo

+0

好吧,然后,尝试为TextView设置属性android:textIsSelectable =“true”。 –

+0

根本没有尝试过的朋友:( – Oreo

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值是真还是假,如果真设置背景颜色ID为checkId的视图,否则将其更改为白色

现在转到您的OnItemClickListener 用于循环以确保哪个项目被点击

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

你做