it-swarm.com.de

Wie kann ich die Breite von ImageView programmgesteuert in Android einstellen?

Wie Sie die Größe von imageview, textview oder einem anderen vergrößern oder verkleinern können, indem Sie programmgesteuert im linearen Layout in getview () des Folienmenüs programmieren.

Ich habe Folienmenüs durch Android-Hive-Tutorials erhalten 

Genau im Dia-Menü muss ich ein Benutzerprofil hinzufügen und seinen Namen, Standort wie in Facebook, Google und anderen sozialen Websites. Hierfür wurde viel mit (getlayoutparams (), setheight () ...) versucht, auch wenn viel der Methode, aber ich kann es nicht in der Seitenmenüliste setzen.

Was auch immer Methode, aber keine Änderungen im Profilbild und Namen.

Hier ist mein 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);

}
}

Layout:

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

Wenn jemand eine Idee hat, leite mich bitte Freunde.

12
user3737339

So legen Sie Breite und Höhe programmgesteuert fest und stellen Sie sicher, dass Sie dem übergeordneten Layout der Bildansicht keine feste Breite und Höhe zugewiesen haben

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

Diese einfache Möglichkeit, Ihre Aufgabe zu erledigen:

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

wenn Sie die Bildschirmgröße in Höhe und Breite angeben möchten, verwenden Sie den folgenden Code:

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

hoffe voll zu dir.

siehe meine Antwort: -

ImageView Breite und Höhe programmgesteuert einstellen?

1
duggu

Vielleicht könnten Sie versuchen, die minHeight des übergeordneten Containers (in Ihrem Fall das LinearLayout) auf die gewünschte Höhe für das Bild festzulegen und die Höhe auf WRAP_CONTENT zu setzen.

0
crazylpfan