Как установить высоту ширины ImageView программно в android?

154
14

Как увеличить или уменьшить размер изображения, текста или любого другого программным способом в линейном макете в меню просмотра() в меню просмотра().


Я получил меню слайдов через учебники по androidhive


Именно в меню слайдов мне нужно добавить pic профиля пользователя, его имя, местоположение, как в facebook, google и других социальных сайтах, для этого много пробовали (getlayoutparams(), setheight()...), хотя с большим количеством методов, но я не могу установить его в списке боковых меню.


Какой бы способ, но никаких изменений в файле pic и имени.


Вот мой код:


mport android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class NavDrawerListAdapter extends BaseAdapter {
ImageView imgIcon;
LinearLayout linearposition;
private Context context;
private ArrayList<NavDrawerItem> navDrawerItems;

public NavDrawerListAdapter(Context context,
ArrayList<NavDrawerItem> navDrawerItems) {
this.context = context;
this.navDrawerItems = navDrawerItems;
}

@Override
public int getCount() {
return navDrawerItems.size();
}

@Override
public Object getItem(int position) {
return navDrawerItems.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.drawer_list_item, null);

linearposition = (LinearLayout) convertView
.findViewById(R.id.linearposition);
}
NavDrawerItem label = navDrawerItems.get(position);
if (position == 0) {
newsection(linearposition, label);
}
imgIcon = (ImageView) convertView.findViewById(R.id.icon);
TextView txtTitle = (TextView) convertView.findViewById(R.id.title);
TextView txtCount = (TextView) convertView.findViewById(R.id.counter);

imgIcon.setImageResource(navDrawerItems.get(position).getIcon());
txtTitle.setText(navDrawerItems.get(position).getTitle());

// displaying count
// check whether it set visible or not
if (navDrawerItems.get(position).getCounterVisibility()) {
txtCount.setText(navDrawerItems.get(position).getCount());
} else {
// hide the counter view
txtCount.setVisibility(View.GONE);
}

return convertView;
}

@SuppressLint("NewApi"
private void newsection(LinearLayout linearposition, NavDrawerItem label) {
// int height = 50;
// int width =50;
ImageView image = new ImageView(context);
// image.setImageResource(R.drawable.profile_circle);
// image.setPaddingRelative (5, 5, 5, 5);
// image.setMaxHeight(40);
// image.setMaxWidth(40);
// image.getLayoutParams().height = 20;
// image.requestLayout();
android.view.ViewGroup.LayoutParams layoutParams = image
.getLayoutParams();
layoutParams.width = 20;
layoutParams.height = 20;
image.setLayoutParams(layoutParams);
linearposition.addView(image);

// android.view.ViewGroup.LayoutParams layoutParams =
// image.getLayoutParams();
// LinearLayout.LayoutParams layoutParams = new
// LinearLayout.LayoutParams(0, 0);
// image.setLayoutParams(layoutParams);
// layoutParams.width = 30;
// layoutParams.height = 30;
// image.setLayoutParams(new LayoutParams(width,height));
// LinearLayout.LayoutParams layoutParams = new
// LinearLayout.LayoutParams(100, 100);
// iv.setLayoutParams(layoutParams);
// image.setLayoutParams(layoutParams);
// linearposition.addView(image);

}
}


Разметка:


 <?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="48dp"
android:background="@drawable/list_selector" >

<LinearLayout
android:id="@+id/linearposition"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
androidrientation="vertical" />

<ImageView
android:id="@+id/icon"
android:layout_width="25dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:contentDescription="@string/desc_list_item_icon"
androidrc="@drawable/home_icon" />

<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_toRightOf="@id/icon"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
androidaddingRight="40dp"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:textColor="@color/list_item_title" />

<TextView
android:id="@+id/counter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="8dp"
android:background="@drawable/counter_bg"
android:textColor="@color/counter_text_color" />

</RelativeLayout>


Если у кого-нибудь есть идея об этом, пожалуйста, помогите мне с друзьями.

спросил(а) 2021-01-19T11:57:08+03:00 6 месяцев, 1 неделя назад
1
Решение
225

Чтобы установить ширину и высоту программно и убедитесь, что вы не указали фиксированную ширину и высоту родительского макета изображения

android.view.ViewGroup.LayoutParams layoutParams = imageView.getLayoutParams();
layoutParams.width = 80;
layoutParams.height = 80;
imageView.setLayoutParams(layoutParams);

ответил(а) 2021-01-19T11:57:08+03:00 6 месяцев, 1 неделя назад
63

Этот простой способ выполнить вашу задачу:


setContentView(R.id.main);    
ImageView iv = (ImageView) findViewById(R.id.left);
int width = 60;
int height = 60;
LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(width,height);
iv.setLayoutParams(parms);

и другим способом, если вы хотите указать размер экрана по высоте и ширине, используйте ниже код:


setContentView(R.id.main);    
Display display = getWindowManager().getDefaultDisplay();
ImageView iv = (ImageView) findViewById(R.id.left);
int width = display.getWidth(); // ((display.getWidth()*20)/100)
int height = display.getHeight();// ((display.getHeight()*30)/100)
LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(width,height);
iv.setLayoutParams(parms);

Надеюсь, вам будет полезно.


см. мой ответ: -


Программно настроить ширину и высоту ImageView?

ответил(а) 2021-01-19T11:57:08+03:00 6 месяцев, 1 неделя назад
46

Возможно, вы могли бы попытаться установить minHeight родительского контейнера (LinearLayout в вашем случае) на высоту, которая вам нужна для изображения, и установить высоту в WRAP_CONTENT?

ответил(а) 2021-01-19T11:57:08+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема