Как повторить разметку из layout в коде
Есть код, который предназначен для встраивания в модификации программ(уж не обессудьте, но нам надо на чем-то зарабатывать) рекламы. Сейчас чтобы его добавить мне надо зарегистрировать 5 id и 1 layout, а затем поменять их в коде, что отнимает много времени. Решить проблему и сэкономить кучу времени можно создав разметку в коде, однако это оказалось куда труднее, чем в layout-ресурсе.
Прикреплю готовый layout-файл и мои потуги в создании разметки в коде, а так же скриншоты того, что было, и того, что получилось через код. Прошу помочь мне сделать хотя бы что-то похожее.
Layout-файл:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/adsImage"
android:layout_marginTop="10dp"
android:layout_marginRight="5dp"
android:layout_marginLeft="5dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/adsTitle"
android:textStyle="bold"/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@+id/adsText"
android:layout_marginRight="5dp"
android:layout_marginLeft="5dp"/>
</ScrollView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="bottom|end"
android:orientation="horizontal"
android:layout_gravity="bottom|end">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/close"
android:text="Закрыть"
style="?android:attr/buttonBarButtonStyle"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/open"
android:text="Подробнее"
style="?android:attr/buttonBarButtonStyle"/>
</LinearLayout>
</FrameLayout>
Попытки создания разметки в коде:
ImageView adsImage = new ImageView(this);
TextView adsTitleView = new TextView(this);
adsTitleView.setGravity(Gravity.CENTER);
TextView adsTextView = new TextView(this);
adsTextView.setGravity(Gravity.CENTER);
Button open = new Button(this);
open.setText("Подробнее");
open.setGravity(Gravity.BOTTOM);
Button close = new Button(this);
close.setEnabled(false);
open.setGravity(Gravity.BOTTOM);
LinearLayout mainLL = new LinearLayout(this);
mainLL.setOrientation(LinearLayout.VERTICAL);
mainLL.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
mainLL.setGravity(Gravity.CENTER);
mainLL.addView(adsImage);
mainLL.addView(adsTitleView);
mainLL.addView(adsTextView);
LinearLayout buttonLayout = new LinearLayout(this);
buttonLayout.setOrientation(LinearLayout.HORIZONTAL);
buttonLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
buttonLayout.setGravity(Gravity.BOTTOM);
buttonLayout.addView(open);
buttonLayout.addView(close);
FrameLayout mainFL = new FrameLayout(this);
mainFL.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
mainFL.addView(mainLL);
mainFL.addView(buttonLayout);
setContentView(mainFL);
Скрины(Layout/код): https://i.stack.imgur.com/WB3uX.png / https://i.stack.imgur.com/Rg0xg.png
Ответы (1 шт):
Все таки сделал сам, на это ушла куча времени гугления. Вот конечный результат, повторил полностью
ImageView adsImage = new ImageView(this);
LinearLayout.LayoutParams adsImageParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
adsImageParams.gravity = Gravity.CENTER;
adsImage.setLayoutParams(adsImageParams);
TextView adsTitleView = new TextView(this);
LinearLayout.LayoutParams adsTitleViewParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
adsTitleViewParams.gravity = Gravity.CENTER;
adsTitleView.setLayoutParams(adsTitleViewParams);
adsTitleView.setGravity(Gravity.CENTER);
TextView adsTextView = new TextView(this);
LinearLayout.LayoutParams adsTextViewParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
adsTextViewParams.gravity = Gravity.CENTER;
adsTextView.setLayoutParams(adsTextViewParams);
adsTextView.setGravity(Gravity.CENTER);
Button open = new Button(this, null, android.R.attr.buttonBarButtonStyle);
LinearLayout.LayoutParams openParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
openParams.gravity = Gravity.BOTTOM;
open.setLayoutParams(openParams);
open.setText("Подробнее");
Button close = new Button(this, null, android.R.attr.buttonBarButtonStyle);
LinearLayout.LayoutParams closeParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
closeParams.gravity = Gravity.BOTTOM;
close.setLayoutParams(closeParams);
close.setEnabled(false);
LinearLayout contentLL = new LinearLayout(this);
contentLL.setOrientation(LinearLayout.VERTICAL);
FrameLayout.LayoutParams contentLLParams = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
contentLLParams.gravity = Gravity.CENTER;
contentLL.setLayoutParams(contentLLParams);
contentLL.setGravity(Gravity.CENTER);
contentLL.addView(adsImage);
contentLL.addView(adsTitleView);
contentLL.addView(adsTextView);
LinearLayout buttonLayout = new LinearLayout(this);
FrameLayout.LayoutParams buttonLayoutParams = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
buttonLayoutParams.gravity = Gravity.RIGHT|Gravity.BOTTOM;
buttonLayout.setLayoutParams(buttonLayoutParams);
buttonLayout.setOrientation(LinearLayout.HORIZONTAL);
buttonLayout.addView(open);
buttonLayout.addView(close);
FrameLayout mainL = new FrameLayout(this);
FrameLayout.LayoutParams mainLParams = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
mainL.setLayoutParams(mainLParams);
mainL.addView(contentLL);
mainL.addView(buttonLayout);
setContentView(mainL);