Custom Buttons in GridView proportional anpassen

P

phiLue

Neues Mitglied
0
Guten Abend liebe Android-Gemeinde,

ich habe folgendes problem. Nämlich möchte ich Buttons in einen GridView laden, was auch wunderbar funktioniert. Im GridView kann ich ja nun die Breite der Spalten eingeben mit "Column width".

Den Buttons gebe ich immer einen Background mit, welcher ein Selector ist. Dieser Selector enthählt Grafiken für den Button, welche nur proportional skalliert werden dürfen, da diese sonst verzerren.

Wie ist das möglich? Ich hab schon eine Methode zum skallieren von Bildern, aber das funktioniert mit XML Dateien (selector) nicht. =/

Ich möchte letzendlich wenn ich den Button mit dem Selector in den GridView einfüge, und dieser in der Breite gestreckt bzw. gestaucht wird, das dies in der Höhe auch automatisch passiert.

Weiß hier vielleicht jemand was man da machen kann?
 
hmm so ganz weiß ich nicht, was dein problem ist, aber ich würde mal in richtung 9patch schauen.

kennst du das?
 
An sich kein schlechter Gedanke, nutz ich sonst auch überall wo es möglich ist und Sinn macht, aber hier geht dies leider nicht.

Sagen wir mein Bild ist jetzt 144x180 Pixel groß mit 240 DPI. Im GridView soll die breite einer Spalte 90 betragen, was auch wunderbar funktioniert. Allerdings wird das Bild nun 90x180 dargestellt, und das ist natürlich dann völlig verzerrt.

Wie ich es im Sourcecode verkleinern kann weiß ich leider nicht, da es sich hier nicht direkt um ein png handelt, sondern um einen Selector(xml), welche die png benutzt.

//Edit:
Letzendlich muss es keine größe von 90sp sein. Schöner wäre es ich könnte einfach sagen pro Reihe 3 Buttons und er würde es anhand der Bildschirmgröße dann skallieren.
 
Zuletzt bearbeitet:
naja mit layout weight kannst du das leicht bestimmen
 
Hab danach gesucht, aber leider hat GridView.LayoutParams kein weight.
Ich poste einfach mal den Quellcode den ich bis jetzt habe...

Hier die XML Datei in der sich auch der GridView befindet:
Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="#FFFF">
  
      <LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:background="@drawable/kopf_verlauf" android:layout_height="wrap_content" android:id="@+id/headerLayout">
    <ImageView android:id="@+id/imageView1" android:layout_height="wrap_content" android:src="@drawable/logo" android:layout_width="fill_parent" android:layout_marginTop="20sp"></ImageView>
    <ui.widgets.menu.MenuOrangeButton android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/menuTopOrange" android:layout_marginBottom="5sp"></ui.widgets.menu.MenuOrangeButton>
        
    </LinearLayout>
    
    <RelativeLayout android:layout_height="wrap_content" android:layout_width="wrap_content" android:paddingBottom="10sp" android:layout_below="@+id/headerLayout" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:id="@+id/contentLayout">
          
          <GridView xmlns:android="http://schemas.android.com/apk/res/android" 
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent"
            android:numColumns="auto_fit"
            android:stretchMode="spacingWidth"
            android:gravity="center"
            android:id="@+id/uebersichtGridView" android:verticalSpacing="3sp" android:horizontalSpacing="3sp" android:drawingCacheQuality="high" android:columnWidth="90sp"/>
          
      </RelativeLayout>
      <include android:id="@+id/slidingMenu" layout="@layout/sliding_menu_drawer" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" />

    
</RelativeLayout>
Und hier der BaseAdapter den ich überschrieben hab und dem GridView hinzugefügt habe, wobei die ResourceID der Selector-XML in this.h.getGtList().get(position).getSelectorResID() steht:
Code:
public class UebersichtGridViewAdapter extends BaseAdapter {

    private Context mContext;
    private Haendler h;
    
    
    public UebersichtGridViewAdapter(Context c, Haendler h) {
        this.mContext = c;
        this.h = h;
    }
    
    @Override
    public int getCount() {
        return h.getGtList().size();

    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return h.getGtList().get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(final int position, final View convertView, ViewGroup parent) {
           Button b = new Button(this.mContext);
           

        
        if(position <= h.getGtList().size()) {
            GridView.LayoutParams lp = new GridView.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            b.setLayoutParams(lp);
            
            
            
            b.setBackgroundResource(this.h.getGtList().get(position).getSelectorResID());    
        
            b.setFocusable(false);
            b.setFocusableInTouchMode(false);
            b.setClickable(true);

            
        } else {
            // TODO: Blanko-Button without function
        }
        
        return b;
    }


}
Und so wird das ganze initialisiert:
Code:
getHaendler().setGtList((ArrayList<Typ>) result);
                UebersichtGridViewAdapter adapter = new UebersichtGridViewAdapter(view, getHaendler());
                
                view.getContentGridView().setAdapter(adapter);
Ich hoffe es wird jetzt ein bisschen klarer was ich möchte. :-(
 
Zuletzt bearbeitet:

Ähnliche Themen

A
  • AnimaAngelo85
Antworten
1
Aufrufe
325
swa00
swa00
MES
Antworten
10
Aufrufe
808
MES
MES
A
Antworten
3
Aufrufe
681
swa00
swa00
Zurück
Oben Unten