আমার একটি চিত্র সহ একটি চিত্র রয়েছে, সেই চিত্রের উপরে আমি একটি পাঠ্য রাখতে চাই। আমি কীভাবে এটি অর্জন করতে পারি?
আমার একটি চিত্র সহ একটি চিত্র রয়েছে, সেই চিত্রের উপরে আমি একটি পাঠ্য রাখতে চাই। আমি কীভাবে এটি অর্জন করতে পারি?
উত্তর:
এইভাবেই আমি এটি করেছি এবং আপনি কোনও রিলেটিভ লাইআউটের ভিতরে যা চেয়েছিলেন ঠিক ঠিক তেমন কাজ করেছে:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativelayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/myImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/myImageSouce" />
<TextView
android:id="@+id/myImageViewText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/myImageView"
android:layout_alignTop="@id/myImageView"
android:layout_alignRight="@id/myImageView"
android:layout_alignBottom="@id/myImageView"
android:layout_margin="1dp"
android:gravity="center"
android:text="Hello"
android:textColor="#000000" />
</RelativeLayout>
আপনি কোনও ভিন্ন দিক থেকে নিতে পারেন: ব্যাকগ্রাউন্ডে একটি অঙ্কনযোগ্য টেক্সটভিউ পাওয়া সহজ বলে মনে হচ্ছে:
<TextView
android:id="@+id/text"
android:background="@drawable/rounded_rectangle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
</TextView>
আপনি সম্ভবত
onDraw
। super.onDraw()
প্রথমে সেই পদ্ধতিতে কল করুন এবংযদি আপনি এটি সেভাবে করেন তবে আপনি এটি একক লেআউট উপাদান হিসাবে ব্যবহার করতে পারেন যা অন্যান্য উপাদানগুলির সাথে একসাথে বিন্যাস করা সহজ করে।
এটি অর্জনের জন্য আপনি ফ্রেমলআউট বা মার্জ লেআউটটি ব্যবহার করতে চান। অ্যান্ড্রয়েড ডেভ গাইড এর এখানে একটি দুর্দান্ত উদাহরণ রয়েছে: অ্যান্ড্রয়েড লেআউট ট্রিকস # 3: মার্জ করে অনুকূলিত করুন ।
অনেক উপায় আছে। আপনি রিলেটিভলআউট বা অ্যাবসুলিউট লেআউট ব্যবহার করেন।
আপেক্ষিকের সাথে, আপনার চিত্রটি বাম পাশে অভিভাবকের সাথে সারিবদ্ধ হতে পারে এবং পিতামাতার বামদিকেও পাঠ্যটি প্রান্তিকভাবে থাকতে পারে ... তারপরে আপনি যেখানে লাইন লাগিয়েছেন তা পেতে আপনি মার্জিন এবং প্যাডিং এবং মাধ্যাকর্ষণ ব্যবহার করতে পারেন ইমেজ উপর চান।
আপনি একটি টেক্সটভিউ ব্যবহার করতে পারেন এবং আপনি যে চিত্রটি ব্যবহার করতে চান তার পটভূমি পরিবর্তন করতে পারেন
এর জন্য আপনি টেক্সটভিউতে android:drawableLeft/Right/Top/Bottom
একটি চিত্র স্থাপনের জন্য একটিমাত্র টেক্সটভিউ ব্যবহার করতে পারেন । এছাড়াও আপনি টেক্সটভিউ এবং অঙ্কনযোগ্য এর মধ্যে কিছু প্যাডিং ব্যবহার করতে পারেনandroid:drawablePadding=""
এটি এর মতো ব্যবহার করুন:
<TextView
android:id="@+id/textAndImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableBottom="@drawable/yourDrawable"
android:drawablePadding="10dp"
android:text="Look at the drawable below"/>
এটির সাথে আপনার কোনও অতিরিক্ত চিত্রদর্শন প্রয়োজন হবে না। টেক্সটভিউয়ের একাধিক পার্শ্বে দুটি অঙ্কনযোগ্য ব্যবহার করাও সম্ভব।
এটি ব্যবহার করে আপনি যে সমস্যার মুখোমুখি হবেন তা হ'ল ছবিটি চিত্রের ভিউয়ের মতো করে আঁকতে পারা যায় না।
নীচের কোডটি চেষ্টা করুন এটি আপনাকে সহায়তা করবে `
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="150dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/gallery1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#7ad7d7d7"
android:gravity="center"
android:text="Juneja Art Gallery"
android:textColor="#000000"
android:textSize="15sp"/>
</RelativeLayout>
নীচের কোডটি আপনাকে সহায়তা করবে
public class TextProperty {
private int heigt; //读入文本的行数
private String []context = new String[1024]; //存储读入的文本
/*
*@parameter wordNum
*
*/
public TextProperty(int wordNum ,InputStreamReader in) throws Exception {
int i=0;
BufferedReader br = new BufferedReader(in);
String s;
while((s=br.readLine())!=null){
if(s.length()>wordNum){
int k=0;
while(k+wordNum<=s.length()){
context[i++] = s.substring(k, k+wordNum);
k=k+wordNum;
}
context[i++] = s.substring(k,s.length());
}
else{
context[i++]=s;
}
}
this.heigt = i;
in.close();
br.close();
}
public int getHeigt() {
return heigt;
}
public String[] getContext() {
return context;
}
}
public class MainActivity extends AppCompatActivity {
private Button btn;
private ImageView iv;
private final int WORDNUM = 35; //转化成图片时 每行显示的字数
private final int WIDTH = 450; //设置图片的宽度
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView) findViewById(R.id.imageView);
btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int x=5,y=10;
try {
TextProperty tp = new TextProperty(WORDNUM, new InputStreamReader(getResources().getAssets().open("1.txt")));
Bitmap bitmap = Bitmap.createBitmap(WIDTH, 20*tp.getHeigt(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setTextAlign(Paint.Align.LEFT);
paint.setTextSize(20f);
String [] ss = tp.getContext();
for(int i=0;i<tp.getHeigt();i++){
canvas.drawText(ss[i], x, y, paint);
y=y+20;
}
canvas.save(Canvas.ALL_SAVE_FLAG);
canvas.restore();
String path = Environment.getExternalStorageDirectory() + "/image.png";
System.out.println(path);
FileOutputStream os = new FileOutputStream(new File(path));
bitmap.compress(Bitmap.CompressFormat.PNG, 100, os);
//Display the image on ImageView.
iv.setImageBitmap(bitmap);
iv.setBackgroundColor(Color.BLUE);
os.flush();
os.close();
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}```