2016-01-28 23 views
0

我有RecyclerView它擁有一些TextView s。我已將RecyclerView的背景設置爲以下recycler_view_background.xml將圓角添加到狀態使用XML的TextView的選定背景

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#000000" /> 
    <corners android:topLeftRadius="@dimen/player_category_radius" android:topRightRadius="@dimen/player_category_radius" 
     android:bottomLeftRadius="@dimen/player_category_radius" android:bottomRightRadius="@dimen/player_category_radius"/> 
    <stroke android:color="#D3D3D3" android:width="1dp" /> 
</shape> 

它工作正常,我在我的RecyclerView圓角。

這裏有一個問題,當我嘗試向TextViews中的任何一個添加背景選擇器時,它們不顯示圓角。這裏的背景xml爲每個項目category_item_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" android:drawable="@drawable/controlbar_gradient"> 
     <shape> 
      <corners android:topLeftRadius="@dimen/player_category_radius" android:topRightRadius="@dimen/player_category_radius" 
       android:bottomLeftRadius="@dimen/player_category_radius" android:bottomRightRadius="@dimen/player_category_radius"/> 
      <stroke android:color="#D3D3D3" android:width="1dp" /> 
     </shape> 
    </item> 
</selector> 

我編程設定S1 OnClickListenerTextView「在我RecyclerView.Adapter.ViewHolder選擇到真正的S」(選擇工作正常,否則我不會有淡紅色的背景所選擇的項目)。

下面是應用程序的片段。

enter image description here enter image description here

RecyclerView有圓角,但TextView的背景是借鑑了它。所以當選擇的View在頂部或底部。

即使不應該在所選視圖上添加圓角時,圓角不再可見。

我一直在搜索這個類似的解決方案。根據this,我的正確性。

+0

這個選擇是行不通的,因爲它只有一個狀態(你需要一個默認的也行),你剛纔定義的繪製此。內部形狀將被忽略..... – Opiatefuchs

+0

@Opiatefuchs我不需要圓角state_selected =「false」。所以它在這個級別上工作得很好。至於已經定義的drawable,請檢查我的答案,我指出了我自己的錯誤。 – Abbas

回答

1

所以,當發佈這個問題在這裏。我修改後發現我的錯誤。所以在這裏。

在我category_item_selector.xml我已成立背景@drawable/controlbar_gradient這是在我的category_item_selector.xml我又加入shape定義爲

<shape xmlns:android="http://schemas.android.com/apk/res/android" > 

    <gradient 

     android:angle="90" 
     android:type="linear" 
     android:startColor="#7e0809" 
     android:endColor= "#fa0000" /> 

</shape> 

後來一次。所以編譯器首先找到並呈現了shape。因此,所有我所要做的就是改變category_item_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true"> 
     <shape> 
      <gradient 

       android:angle="90" 
       android:type="linear" 
       android:startColor="#7e0809" 
       android:endColor= "#fa0000" /> 

      <corners android:topLeftRadius="@dimen/player_category_radius" android:topRightRadius="@dimen/player_category_radius" 
       android:bottomLeftRadius="@dimen/player_category_radius" android:bottomRightRadius="@dimen/player_category_radius"/> 
      <stroke android:color="#D3D3D3" android:width="1dp" /> 
     </shape> 
    </item> 
</selector> 
0

你也有另一種方式做到這一點...

爲您的RecyclerView小號等背景的背景後,您RecyclerView項目

這樣

<android.support.v7.widget.RecyclerView 
    android:id="@+id/recycler_most_trending" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/recyclerView_background" 
    > 

</android.support.v7.widget.RecyclerView> 
<?xml version="1.0" encoding="utf-8"?> 

設置背景RecyclerView伊特米

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/recyclerView_item_bg"> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" 
     android:padding="10dp" 
     /> 
</LinearLayout>