2014-10-09 16 views
1

基於一些條件,我不得不對角地切割列表單元格。爲此,我已經使用這個代碼所做的對角線繪製的圖像:對角線在整個視圖

diagonal_line.xml

<?xml version="1.0" encoding="utf-8"?> 
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:top="0dp" 
     android:bottom="0dp" 
     > 
     <rotate 
      android:fromDegrees="315" 
      android:toDegrees="315" 
      android:pivotX="0%" 
      android:pivotY="0%" > 
      <shape 
       android:shape="line" 
       > 
       <stroke 
        android:width="10dp" 
        android:color="@color/grey" /> 
      </shape> 
     </rotate> 
    </item> 
    </layer-list> 

在列表元素的XML它被用作:

<ImageView 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:background="@drawable/diagonal_line" 
    android:layerType="software" 
    android:scaleType="fitXY" 
    /> 

此對角線出現在圖形單元格的xml視圖,但沒有列表後被誇大。目前,其可見度與任何條件無關,即可見度始終爲真。

任何想法的問題是什麼?對於對角線

+0

你可以發佈你的適配器xml嗎?是否存在與適配器的getView重疊的內容。 – Pr38y 2014-10-09 12:16:16

+0

在適配器中,只設置了文本。在列表單元格的xml中,這是要繪製的最後一個視圖,其餘視圖是文本視圖。 – seema 2014-10-09 12:43:51

+0

@seema你可以添加截圖嗎? – 2014-10-09 12:55:29

回答

2

自定義的看法是:

import android.content.Context; 
import android.content.res.Resources; 
import android.graphics.Canvas; 
import android.graphics.Paint; 
import android.util.AttributeSet; 
import android.view.View; 
public class DiagonalLineView extends View { 

private int dividerColor; 
private Paint paint; 

public DiagonalLineView(Context context) 
{ 
    super(context); 
    init(context); 
} 

public DiagonalLineView(Context context, AttributeSet attrs) 
{ 
    super(context, attrs); 
    init(context); 
} 

public DiagonalLineView(Context context, AttributeSet attrs, int defStyle) 
{ 
    super(context, attrs, defStyle); 
    init(context); 
} 

private void init(Context context) 
{ 
    Resources resources = context.getResources(); 
    dividerColor = resources.getColor(R.color.grey); 

    paint = new Paint(); 
    paint.setAntiAlias(true); 
    paint.setColor(dividerColor); 
     paint.setStrokeWidth(resources.getDimension(R.dimen.vertical_divider_width)); 
} 

@Override 
protected void onDraw(Canvas canvas) 
{ 
    super.onDraw(canvas); 
    canvas.drawLine(0, getHeight(), getWidth(), 0, paint); 
} 

} 

它爲我工作。