[英]dynamically add textview on top of imageview android
我想將textview放在android中的imageview之上。 Imageview正在顯示位圖,我想將textview放在imageview的頂部。 我也希望無論在哪里觸摸imageview,textview都必須出現在那里。最好的方法是做什么。 謝謝
<LinearLayout
android:id="@+id/ll"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv_image2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:scaleType="fitXY"
android:adjustViewBounds="true"
/>
</LinearLayout>
//我的活動
switch (action) {
case MotionEvent.ACTION_DOWN:
Bitmap.Config config = bm.getConfig();
int width = bm.getWidth();
int height = bm.getHeight();
bm2 = Bitmap.createBitmap(width, height, config);
c = new Canvas(bm2);
c.drawBitmap(bm, 0, 0, null);
iv2.setImageBitmap(bm2);
}
break;
你可以使用RealtiveLayout從不同的方法做到這一點:
首先是XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:src="@drawable/ic_launcher" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
然后是活動代碼:
public class LogDetailActivity extends Activity {
TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_log_detail);
ImageView imageView = (ImageView) findViewById(R.id.imageView);
mTextView = (TextView) findViewById(R.id.textView);
mTextView.setText("Example Text");
mTextView.setVisibility(View.GONE);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mTextView.setVisibility(View.VISIBLE);
}
});
}
}
這應該解決你的第二個問題! 我沒有測試過這段代碼,但它應該可以工作:
確保將implements View.OnTouchListener
添加到類聲明中!
imageView.setOnTouchListener(this);
// later on the in the code, add this method
public boolean onTouch(View v, MotionEvent event) {
switch(v.getId()) {
case R.id.imageViewId:
float xPosition = event.getX();
float yPosition = event.getY();
textView.setX(xPosition);
textView.setY(yPosition);
break;
}
}
此外,對0mach0建議的XML進行更改。
Imageview
。 <ImageView
android:id="@+id/arrangementImageView"
android:layout_width="0dp"
android:layout_height="wrap_content"
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_arrangement);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
panelLayout = (ConstraintLayout) findViewById(R.id.panelLayout);
arrangementImageView = findViewById(R.id.arrangementImageView);
arrangementImageView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
int offsetX = 10; // Up to you to set
int offsetY = 10;
TextView myObj = new TextView(v.getContext().getApplicationContext());
myObj.setCompoundDrawablesWithIntrinsicBounds(R.drawable.myImage, 0, 0, 0);
myObj.setTextViewId(1001);
panelLayout.addView(myObj, -1);
ConstraintSet set = new ConstraintSet();
set.clone(panelLayout);
set.connect(myObj.getId(), ConstraintSet.TOP, panelLayout.getId(), ConstraintSet.TOP, (int) event.getRawY() - offsetY);
set.connect(myObj.getId(), ConstraintSet.LEFT, panelLayout.getId(), ConstraintSet.LEFT, (int) event.getRawX() - offsetX);
set.applyTo(panelLayout);
break;
}
return false;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.