web-dev-qa-db-fra.com

Comment définir la largeur en hauteur de ImageView par programme dans Android?

Comment augmenter ou diminuer la taille de imageview, textview ou n’importe laquelle d’autre en appliquant par programme une disposition linéaire dans getview () du menu des diapositives.

J'ai eu un menu de diapositives à travers des tutoriels androidhive 

C’est exactement dans le menu des diapositives que j’ai besoin d’ajouter une photo de profil utilisateur ainsi que son nom, son emplacement, comme sur Facebook, Google et d’autres sites de réseaux sociaux, pour cela essayé avec beaucoup de choses de la méthode, mais je ne peux pas le définir dans la liste du menu latéral.

Quelle que soit la méthode mais aucun changement dans la photo et le nom du profil.

Voici mon code:

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);

}
}

Disposition:

 <?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>

Si quelqu'un a une idée à ce sujet, guide-moi s'il te plaît.

12
user3737339

Pour définir la largeur et la hauteur par programme et assurez-vous que vous n'avez pas donné une largeur et une hauteur fixes à la disposition parente de la vue image

Android.view.ViewGroup.LayoutParams layoutParams = imageView.getLayoutParams();
layoutParams.width = 80;
layoutParams.height = 80;
imageView.setLayoutParams(layoutParams);
26
Sunil Kumar Sahoo

Ce moyen simple de faire votre tâche:

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);

et d'une autre manière si vous voulez donner une taille d'écran en hauteur et en largeur, utilisez le code ci-dessous:

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);

j'espère utiliser plein à vous.

voir ma réponse: -

Définir la largeur et la hauteur d'ImageView par programme?

1
duggu

Vous pourriez peut-être essayer de définir la hauteur minimale du conteneur parent (le LinearLayout dans votre cas) à la hauteur souhaitée pour l'image et définir la hauteur sur WRAP_CONTENT?

0
crazylpfan