Well, my problem is little bit complicated(for me). Suppose i have a RelativeLayout
(Or any other Layout
as needed).
Now i make some View
like TextView
.(multiple View
). Those View
will include following characteristics i will give from java code.
View
to the Layout in a specific position.View
can be overlapped (like following picture) where positionX is will be an integer defining where the View
will be set in the Layout
from top.
Now i want to add those View
to the Layout
like the following photo.
(All View
will be of rectangular size; Sorry for the bad Editing.)
How can i do this? I badly need the solution.
I hope i have explained my problem with my poor English :(
Thank you in advance <3 <3
As you've mentioned,
All View will be of rectangular size
So let's take a button yourButton
for example. You need to pass two values, one from top & one from left where you want to put the view. Then use the following method, as you wanted it addView()
to achieve the desired output in a RelativeLayout
:
private void addView(child, positionFromTop, positionFromLeft, width, height) {
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.topMargin = (int)(positionFromTop);
layoutParams.leftMargin = (int)(positionFromLeft);
yourButton.setLayoutParams(layoutParams);
}
You can customize the layout using the width and height in the similar way programmatically, if required. Please refer to this answer to get the code of how to resize a custom view programmatically. Hope it helps!
You can also use FlexBox layout provided by google to add view dynamically. You can check this Medium post for clear concept about Flexbox Layout
Try this:
//-----Main Layout-----\\
LinearLayout l1 = findViewById(R.id.myLinear);
ll.setOrientation(LinearLayout.VERTICAL);
//-----First layout-----\\
LinearLayout l11 = new LinearLayout(this);
l11.setBackgroundColor(android.R.color.holo_orange_dark);
l1.addView(l11, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
//-----Second layout-----\\
LinearLayout l12 = new LinearLayout(this);
l12.setBackgroundColor(android.R.color.holo_green_dark);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(-30, 20, 20, 0); //Negative margin top to superposition views
l1.addView(l12, layoutParams);
If you want to add multiple views dynamically maybe try to refactor them into one compund view (it will be easier to position them)
https://www.vogella.com/tutorials/AndroidCustomViews/article.html
What type of ViewGroup do you use? If its constraint layout you can set constraints programatically using ConstraintLayout.LayoutParams in same way as SaadAAkash mentioned
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.