আমি পার্টি করতে দেরি করেছি এবং আমি একই সমস্যার মুখোমুখি হয়েছি এবং গুগল আমাকে প্রথম ফলাফল হিসাবে এই স্ট্যাকওভারফ্লো থ্রেডে দেখিয়েছে।
আমি ত্রিভুজ যুক্ত করার জন্য এবং এক্সএমএল পদ্ধতির মাধ্যমে ত্রিভুজ আকারটি প্রদর্শিত হওয়ার চেয়ে বেশি জায়গা নিচ্ছে এমন কোনও সমস্যা খুঁজে বের করার জন্য এক্সএমএল উপায়টি ব্যবহার করার চেষ্টা করেছি।
লেআউট সীমানা সহ স্ক্রিন শট দেখুন
সুতরাং এই কাস্টম ভিউ ক্লাসটি শেষ করে যা নিম্নলিখিত যে কোনও একটির ত্রিভুজ আঁকতে পারে: -
- আপ পয়েন্টিং
- ডাউন পয়েন্টিং
- বাম নির্দেশ
- ডান পয়েন্ট
যেমনটি
package com.hiteshsahu.materialupvotewidget;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.support.annotation.NonNull;
import android.util.AttributeSet;
import android.view.View;
public class TriangleShapeView extends View {
private int colorCode = Color.DKGRAY;
public int getColorCode() {
return colorCode;
}
public void setColorCode(int colorCode) {
this.colorCode = colorCode;
}
public TriangleShapeView(Context context) {
super(context);
if (isInEditMode())
return;
}
public TriangleShapeView(Context context, AttributeSet attrs) {
super(context, attrs);
if (isInEditMode())
return;
}
public TriangleShapeView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
if (isInEditMode())
return;
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int w = getWidth() / 2;
int h = getHeight() / 2;
//Choose what type of triangle you want here
Path path = getLeftTriangle(w, h);
path.close();
Paint p = new Paint();
p.setColor(colorCode);
p.setAntiAlias(true);
canvas.drawPath(path, p);
}
@NonNull
/**
* Return Path for down facing triangle
*/
private Path getInvertedTriangle(int w, int h) {
Path path = new Path();
path.moveTo(0, 0);
path.lineTo(w, 2 * h);
path.lineTo(2 * w, 0);
path.lineTo(0, 0);
return path;
}
@NonNull
/**
* Return Path for Up facing triangle
*/
private Path getUpTriangle(int w, int h) {
Path path = new Path();
path.moveTo(0, 2 * h);
path.lineTo(w, 0);
path.lineTo(2 * w, 2 * h);
path.lineTo(0, 2 * h);
return path;
}
@NonNull
/**
* Return Path for Right pointing triangle
*/
private Path getRightTriangle(int w, int h) {
Path path = new Path();
path.moveTo(0, 0);
path.lineTo(2 * w, h);
path.lineTo(0, 2 * h);
path.lineTo(0, 0);
return path;
}
@NonNull
/**
* Return Path for Left pointing triangle
*/
private Path getLeftTriangle(int w, int h) {
Path path = new Path();
path.moveTo(2 * w, 0);
path.lineTo(0, h);
path.lineTo(2 * w, 2 * h);
path.lineTo(2 * w, 0);
return path;
}
}
আপনি এটিকে সহজভাবে xML বিন্যাসে ব্যবহার করতে পারেন
<com.hiteshsahu.materialupvote.TriangleShapeView
android:layout_width="50dp"
android:layout_height="50dp"></com.hiteshsahu.materialupvote.TriangleShapeView>
আমি জানি ওপি এক্সএমএল সমাধানগুলিতে সমাধান চায় তবে আমি এক্সএমএল পদ্ধতির সাথে সমস্যাটি চিহ্নিত করেছি। আমি আশা করি এটি কারও সাহায্য করবে।