2012-08-29 4 views
3

Dans mon application Android, je veux mettre une bordure sur un ImageView. Je ne sais pas comment mettre vue sur une autre vue. En fait, la bordure est une vue personnalisée.Mettre vue sur une autre vue dans Android

Vue personnalisée Classe:

public class CropBorder extends View { 

    private Paint paint = new Paint(); 


    public CropBorder(Context context) { 
     super(context); 
    } 

    public CropBorder(Context context, AttributeSet attributeSet) { 
     super(context, attributeSet); 
    } 


    @Override 
    public void onDraw(Canvas canvas) { 
     float[][] circleXY = {{5, 5}, {155, 5}, {305, 5}, {5, 105}, {155, 105}, {305, 105}, {5, 55}, {305, 55}}; 
     float[][] lineXY = {{5, 5, 305, 5}, {5, 105, 305, 105}, {5, 5, 5, 105}, {305, 5, 305, 105}}; 

     paint.setColor(Color.BLACK); 
     paint.setStrokeWidth(1); 

     for(int i = 0 ; i < circleXY.length ; i++) 
      canvas.drawCircle(circleXY[i][0], circleXY[i][1], 5, paint); 

     paint.setStrokeWidth(2); 

     for(int i = 0 ; i < lineXY.length ; i++) 
      canvas.drawLine(lineXY[i][0], lineXY[i][1], lineXY[i][2], lineXY[i][3], paint); 
    } 

} 

Activité Classe:

public class CropTestActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.crop_test_layout); 
    } 

} 

XML Mise en page:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/crop_test_layout" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <com.nvtech.backend.utility.imageEditor.CropBorder 
     android:id="@+id/crop_border" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_marginTop="10dp" 
     android:layout_marginLeft="10dp" > 
    </com.nvtech.backend.utility.imageEditor.CropBorder> 

    <ImageView 
     android:id="@+id/android_image" 
     android:src="@drawable/android" 
     android:layout_width="300dp" 
     android:layout_height="300dp" 
     android:layout_marginTop="10dp" 
     android:layout_marginRight="10dp" 
     android:layout_marginBottom="10dp" 
     android:layout_marginLeft="10dp" 
     android:layout_gravity="center" 
     android:scaleType="fitXY" 
     android:contentDescription="@string/android_image_description" > 
    </ImageView> 

</LinearLayout> 

Répondre

2

Vous pouvez simplement envelopper votre ImageView dans un LinearLayout et utiliser le rembourrage à définir la bordure:

<LinearLayout // this is your root container ... > 
    <LinearLayout 
     android:id="@+id/content_item_image_wrapper" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="#00FFFFFF" 
     android:padding="3dip" > 

     <ImageView 
      android:id="@+id/user_profile_thumbnail" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:adjustViewBounds="true" 
      android:maxHeight="80dp" 
      android:src="@drawable/ic_launcher" /> 
    </LinearLayout> 
</LinearLayout> 
+0

Merci pour votre réponse. Mais la frontière est quelque chose comme la frontière de la culture que c'est sur l'image. Je ne veux pas définir la bordure pour 'ImageView'. –

Questions connexes