আমি একটি খুব সহজ সমাধান চেয়েছিলাম যা নমনীয় (যে কারণে আমি লিনিয়ারলআউটগুলি ব্যবহার করি)। এটিই আমি নিয়ে এসেছি।
https://github.com/ShalakoSnell/ মোড়ানো_লাইনার_ লেআউট
দ্রষ্টব্য: আমি পাঠ্যদর্শনগুলি ব্যবহার করে একটি উদাহরণ পদ্ধতি অন্তর্ভুক্ত করেছি (দেখুন টেক্সটভিউআরলিস্টেরফেক্সেক্সেল ()) এক্সএমএল কেবল আইডি এবং উল্লম্ব অভিযোজন সহ একটি প্যারেন্ট ভিউ লিনিয়ারলআউট, অন্য কিছুই প্রয়োজন নেই। ব্যবহারের জন্য: প্যারেন্ট ভিউ এবং প্রসঙ্গের সাথে লিনিয়ারলআউটগুলিতে মোড়ানো এমন দর্শনগুলির একটি অ্যারে পাস করুন। (ভিউএডাপ্টারআরলিস্ট দেখুন (অ্যারেলিস্ট টেক্সটভিউগুলি))
লিনিয়ারলাউটগুলির একটি অ্যারেতে প্রবেশ করাই যা এই পদ্ধতিকে এত নমনীয় করে তোলে, কারণ এটি আপনাকে বিভিন্ন দর্শন প্রকারের যোগ করতে দেয়। সুতরাং প্রথম লিনিয়ারলয়েটে আপনার পাঠ্য থাকতে পারে এবং দ্বিতীয়টিতে আপনার একটি চিত্র থাকতে পারে তৃতীয়টিতে একটি বোতাম এবং আরও কিছু ...
প্রতিকৃতি উদাহরণ
ল্যান্ডস্কেপ উদাহরণ 50dp মার্জিনগুলি উল্লম্বরেখায় লাইনারলয়েআউট
(দুঃখিত, আমি ছবিগুলি এখনও যোগ করতে পারি না ... লিঙ্কগুলি দেখুন।
মেইনএ্যাকটিভিটি.জভা
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new WrappingLinearLayout(
viewAdapterArrayList(textViewArrayListForExample()),
(LinearLayout) findViewById(R.id.verticalLinearLayout),
this);
}
কার্যকলাপ_মাইন.এক্সএমএল
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/verticalLinearLayout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
</LinearLayout>
র্যাপিংলাইনারলআউট.জভা
package com.example.wrapping_linear_layout;
import android.content.Context;
import android.widget.LinearLayout;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
public class WrappingLinearLayout {
public WrappingLinearLayout(@NotNull final ArrayList<LinearLayout> views, @NotNull final LinearLayout verticalLinearLayout, @NotNull final Context context) {
verticalLinearLayout.post(new Runnable() {
@Override
public void run() {
execute(views, verticalLinearLayout, context);
}
});
}
private void execute(@NotNull ArrayList<LinearLayout> views, @NotNull final LinearLayout verticalLinearLayout, @NotNull final Context context) {
ArrayList<LinearLayout> horizontalLinearLayouts = new ArrayList<>();
LinearLayout horizontalLinearLayout = new LinearLayout(context);
horizontalLinearLayouts.add(horizontalLinearLayout);
int verticalLinearLayoutWidth = verticalLinearLayout.getMeasuredWidth()
- (verticalLinearLayout.getPaddingLeft()
+ verticalLinearLayout.getPaddingRight());
int totalWidthOfViews = 0;
for (LinearLayout view : views) {
view.measure(0, 0);
int currentViewWidth = view.getMeasuredWidth();
if (totalWidthOfViews + view.getMeasuredWidth() > verticalLinearLayoutWidth) {
horizontalLinearLayout = new LinearLayout(context);
horizontalLinearLayouts.add(horizontalLinearLayout);
totalWidthOfViews = 0;
}
totalWidthOfViews += currentViewWidth;
horizontalLinearLayout.addView(view);
}
for (LinearLayout linearLayout : horizontalLinearLayouts) {
verticalLinearLayout.addView(linearLayout);
}
}
}
উদাহরণস্বরূপ ব্যবহারের ক্ষেত্রে অতিরিক্ত কোড:
private ArrayList<LinearLayout> viewAdapterArrayList(ArrayList<TextView> textViews) {
ArrayList<LinearLayout> views = new ArrayList<>();
for (TextView textView : textViews) {
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.addView(textView);
views.add(linearLayout);
}
return views;
}
private ArrayList<TextView> textViewArrayListForExample() {
ArrayList<TextView> textViews = new ArrayList<>();
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT
);
for (int i = 0; i < 40; i++) {
TextView textView = new TextView(this);
textView.setText("View " + i + " |");
if (i < 20) {
if (i % 5 == 0) {
textView.setText("View longer view " + i + " |");
} else if (i % 7 == 0) {
textView.setText("View different length view " + i + " |");
} else if (i % 9 == 0) {
textView.setText("View very long view that is so long it's really long " + i + " |");
}
}
textView.setMaxLines(1);
textView.setBackground(new ColorDrawable(Color.BLUE));
textView.setTextColor(Color.WHITE);
textView.setLayoutParams(layoutParams);
textView.setPadding(20, 2, 20, 2);
layoutParams.setMargins(10, 2, 10, 2);
textViews.add(textView);
}
return textViews;
}
}