Layout utan XML

Diskussion i 'Frågor, support och diskussion' startad av M2009, 1 okt 2009.

  1. M2009

    M2009 Infant Droid Medlem

    Blev medlem:
    30 sept 2009
    Inlägg:
    3
    Mottagna gillanden:
    0

    MINA ENHETER

    Hej alla glada.

    Jag försöker lära mig att göra nåt i Android, kan lätt göra spel och applikationer i "vanliga Java" (till och med till vanliga mobiltelefoner som stödjer Javaspel) men tyvärr var det lite knepigare än jag trodde att sätta mig in i Android.

    Det första jag tampas med är allt detta XML-prat, jag vill inte använda XML. Kalla mig gammaldags men jag föredrar att ha allt i min kod.

    Än så länge består all min kod av denna metod:

    Kod:
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final TextView tv = new TextView(this);
        tv.setText("tryck");
        tv.setHeight(40);
        tv.setGravity(Gravity.CENTER);
        tv.setOnTouchListener(new OnTouchListener() {
                public boolean onTouch(View v, MotionEvent event) {
                    tv.setText("TRYCKT");
                    return false;
                }
            });
        
        WebView wv = new WebView(this);
        wv.loadUrl("http://www.whatismyip.org/");
        wv.getSettings().setJavaScriptEnabled(true);
        wv.setInitialScale(100);
        
        LinearLayout ll = new LinearLayout(this);
        ll.setBackgroundColor(Color.BLACK);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.addView(tv);
        ll.addView(wv);
        
        setContentView(ll);
    }
    Detta ger två saker:
    1) En 40px hög plats med text som man kan ändra på genom att man trycker på den.
    2) En vit ruta med sitt ipnummer i (vilket är webbsidan som domänen pekar på), runt 50px hög kanske.

    Vad jag vill är att hemsidan med vit bakgrund (WebView) tar upp hela skärmen förutom de 40 pixlarna som jag reserverat för texten längst upp (TextView).

    Som det är nu så är höjden på WebView lika hög som hemsidan som visas, jag vill att den alltid ska sträckas ut så att den tar upp hela skärmen (utom 40 px längst upp). Detta utan XML vill jag påminna.

    Någon som vet hur man gör denna triviala grej? Och säg nu inget om XML är ni snälla för jag har sökt som en tok men hittar bara en massa XML-snack överallt.

    Tack!
     
  2. echt

    echt Adult Droid Medlem

    Blev medlem:
    11 aug 2009
    Inlägg:
    811
    Mottagna gillanden:
    111
    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact
    Anledningen till att du ser en massa XML snack är att de olika layouts som finns innehåller mycket som du han ha använding för som du annars måste koda själv vilket inte är det lättaste för då, det du kan göra är att börja från scratch med en egenskapad canvas och bygga från det, annars göra en egen layout som t.ex. implements eller extends de du är ute efter, det är lite jobb att få det bra men det rekommenderas varmt av Google pga att varje layout du använder tar massa onödiga resurser.
     
  3. sandos

    sandos Adult Droid Medlem

    Blev medlem:
    27 maj 2009
    Inlägg:
    715
    Mottagna gillanden:
    8

    MINA ENHETER

  4. M2009

    M2009 Infant Droid Medlem

    Blev medlem:
    30 sept 2009
    Inlägg:
    3
    Mottagna gillanden:
    0

    MINA ENHETER

    vad jag egentligen skulle vilja är att layouts funkar som med Swing, tex att man har en borderlayout, eller ännu bättre en miglayout (ej med i standard java (än)), allt skulle vara så enkelt då. har ni tips om några jättebra tutorials för att skapa views? inte officiella på googles hemsida då, dessa har jag redan sneglat på. några gömda guldkorn?

    om nu google gjort det så svårt att göra layouts utan xml som ni får det att låta som måste jag väl lika gärna använda mig av xml :(
     
  5. skepnaden

    skepnaden Infant Droid Medlem

    Blev medlem:
    7 sept 2009
    Inlägg:
    11
    Mottagna gillanden:
    0

    MINA ENHETER

    borde väl gå att styra från koden, är ganska ny på detta själv och kollade bara snabbt men kanske är det: public ViewGroup.LayoutParams (int width, int height)

    Creates a new set of layout parameters with the specified width and height.
    Parameters
    width the width, either FILL_PARENT, WRAP_CONTENT or a fixed size in pixels
    height the height, either FILL_PARENT, WRAP_CONTENT or a fixed size in pixels

    sen finns det säkert ngn setLayoutParams()
     
  6. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Vad har du mot att använda xml-filerna? De är väldigt enkla att skriva, och i dem använder du layout managers som i arbetssättet påminner om det du har i swing. Det finns många fördelar med xml-filerna, men en som är rätt stor är att du när du har xml-filer enkelt kan definiera en som används för portrait och en annan som används för landscape. Själva arkitekturen påminner då också mer om MVC.

    I runtime finns det ingen xml (om jag kommer ihåg det rätt) så du behöver inte oroa dig över att den tar massor med plats.