Форум для тех, кто программирует под Android
Anonymous
При программном добавлении ImageView представление не подчиняется ограничениям макета.
Сообщение
Anonymous » 03 июл 2024, 09:30
Я разрабатываю страницу приложения для Android. Эта страница будет загружать изображения по URL-адресу. Однако загруженные изображения не подчиняются ограничениям макета. В результате появилось неожиданное пустое пространство. Почему и как это решить?
Вот мой код:
Код: Выделить всё
package com.example.emptyactivityjava;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.squareup.picasso.Picasso;
public class for_dynamic_add_img_and_desc extends AppCompatActivity {
LinearLayout LinearLayout_content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_for_dynamic_add_img_and_desc);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
LinearLayout_content = findViewById(R.id.LinearLayout_content);
String[] imgs_url = {
"https://amateurphotographer.com/wp-content/uploads/sites/7/2023/04/Paulina-Stopka-vertical-landscapes-Tryfan-Eryri-National-Park-Tatra-Mountains.jpg",
"https://images.pexels.com/photos/247599/pexels-photo-247599.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1",
"https://samuelearp.com/wp-content/uploads/2023/10/IMG_1512-1536x1273.jpeg",
};
String[] descs = {
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"cccccccccccccccccccccccccccccccccccccccccccccccc"
};
for (int i = 0; i < 3; i++) {
View view = LayoutInflater.from(for_dynamic_add_img_and_desc.this).inflate(R.layout.item_template, null);
Picasso.get().load(imgs_url[i]).into((ImageView) view.findViewById(R.id.img));
((TextView) (view.findViewById(R.id.desc))).setText(descs[i]);
LinearLayout_content.addView(view);
}
}
}
item_template.xml:
Результат содержит неожиданное пустое пространство. Как мне решить эту проблему?
Подробнее здесь:
https://stackoverflow.com/questions/786 ... constraint
1719988219
Anonymous
Я разрабатываю страницу приложения для Android. Эта страница будет загружать изображения по URL-адресу. Однако загруженные изображения не подчиняются ограничениям макета. В результате появилось неожиданное пустое пространство. Почему и как это решить? Вот мой код: [code] [/code] [code]package com.example.emptyactivityjava; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import com.squareup.picasso.Picasso; public class for_dynamic_add_img_and_desc extends AppCompatActivity { LinearLayout LinearLayout_content; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_for_dynamic_add_img_and_desc); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); LinearLayout_content = findViewById(R.id.LinearLayout_content); String[] imgs_url = { "https://amateurphotographer.com/wp-content/uploads/sites/7/2023/04/Paulina-Stopka-vertical-landscapes-Tryfan-Eryri-National-Park-Tatra-Mountains.jpg", "https://images.pexels.com/photos/247599/pexels-photo-247599.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", "https://samuelearp.com/wp-content/uploads/2023/10/IMG_1512-1536x1273.jpeg", }; String[] descs = { "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", "cccccccccccccccccccccccccccccccccccccccccccccccc" }; for (int i = 0; i < 3; i++) { View view = LayoutInflater.from(for_dynamic_add_img_and_desc.this).inflate(R.layout.item_template, null); Picasso.get().load(imgs_url[i]).into((ImageView) view.findViewById(R.id.img)); ((TextView) (view.findViewById(R.id.desc))).setText(descs[i]); LinearLayout_content.addView(view); } } } [/code] item_template.xml: [code] [/code] Результат содержит неожиданное пустое пространство. Как мне решить эту проблему? [img]https://i.sstatic.net/TMy5bWzJ.jpg[/img] Подробнее здесь: [url]https://stackoverflow.com/questions/78655894/when-adding-imageview-programmatically-the-view-does-not-obey-layout-constraint[/url]