मेरे पास एक छवि के साथ एक छवि दृश्य है, उस छवि पर मैं एक पाठ रखना चाहता हूं। मैं उसे कैसे प्राप्त कर सकता हूं?
मेरे पास एक छवि के साथ एक छवि दृश्य है, उस छवि पर मैं एक पाठ रखना चाहता हूं। मैं उसे कैसे प्राप्त कर सकता हूं?
जवाबों:
यह है कि मैंने इसे कैसे किया और यह ठीक उसी तरह से काम किया जैसा आपने एक RelativeLayout के अंदर पूछा था:
<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 होना आसान लगता है:
<TextView
android:id="@+id/text"
android:background="@drawable/rounded_rectangle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
</TextView>
आप संभवतः कर सकते हैं
onDraw
। super.onDraw()
पहले उस विधि में बुलाओ औरयदि आप इसे इस तरह करते हैं, तो आप इसे एकल लेआउट घटक के रूप में उपयोग कर सकते हैं जो अन्य घटकों के साथ मिलकर लेआउट करना आसान बनाता है।
आप इसे प्राप्त करने के लिए एक फ्रेम-आउट या मर्ज लेआउट का उपयोग करना चाहते हैं। एंड्रॉइड देव गाइड में इसका एक शानदार उदाहरण है: Android लेआउट ट्रिक्स # 3: विलय करके ऑप्टिमाइज़ करें ।
बहुत से रास्ते हैं। आप RelativeLayout या AbsoluteLayout का उपयोग करें।
रिश्तेदार के साथ, आप उदाहरण के लिए बाईं ओर माता-पिता के साथ छवि संरेखित कर सकते हैं और पाठ को माता-पिता के बाईं ओर भी संरेखित कर सकते हैं ... तो आप इसे पंक्तिबद्ध करने के लिए पाठ दृश्य पर हाशिये और पैडिंग और गुरुत्वाकर्षण का उपयोग कर सकते हैं छवि पर चाहते हैं।
आप एक टेक्स्ट दृश्य का उपयोग कर सकते हैं और इसकी पृष्ठभूमि को उस छवि में बदल सकते हैं जिसे आप उपयोग करना चाहते हैं
इसके लिए आप केवल एक TextView का उपयोग android:drawableLeft/Right/Top/Bottom
करके किसी चित्र को TextView की स्थिति में ला सकते हैं। इसके अलावा आप TextView और के साथ drawable के बीच कुछ पैडिंग का उपयोग कर सकते हैं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"/>
इसके साथ आपको एक अतिरिक्त ImageView की आवश्यकता नहीं है। टेक्स्टव्यू के एक से अधिक साइड पर दो ड्रॉइबल्स का उपयोग करना भी संभव है।
इसका उपयोग करके आप केवल एक ही समस्या का सामना कर सकते हैं, वह यह है कि ड्रॉबल को ImageView के तरीके से नहीं बढ़ाया जा सकता है।
नीचे दिए गए कोड का प्रयास करें यह आपकी मदद करेगा `
<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();
}
}
});
}
}```