Probleme mit Layouts

B

Boris0815

Fortgeschrittenes Mitglied
4
Hallo,

ich verusche gerade meine erste Android-App zu schreiben und komme nicht so recht mit den Layouts klar. Im Anhang ist ein Bild mit meinem Layout.
Was ich eigentlich haben möchte:

  • Ein Tab-Control mit zwei Reitern
  • In einem Tab befindet sich zuerst eine Liste (Listview)
  • Unter der Liste befindet sich eine Gruppe von Textfeldern und Buttons
Ich habe im angehängten Screenshot 3 Stellen markiert wo es gerade hakt:



  • Zum einen ist der Header meiner Liste vom Tab-Control überdeckt.

  • Zum Anderen wachsen meine Buttons und Textfelder rechts zu weit raus.

  • Zu Letzt hab ich das Problem, dass wenn die Tastatur genutzt wird, diese über meinen Buttons liegt. Können die Buttons nach oben "rutschen" wenn die Tastatur genutzt wird?
Hier mal der Quellcode für das Tab-Layout und eines Tabs.


Code:
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    <RelativeLayout
       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:padding="3dp">
       <FrameLayout
           android:id="@android:id/tabcontent"
           android:layout_width="fill_parent"
           android:layout_height="fill_parent"
        />
       <TabWidget
           android:id="@android:id/tabs"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:layout_alignTop = "@android:id/tabcontent"
           />
    </RelativeLayout>
</TabHost>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:orientation="vertical" >

<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textviewAccount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/padding_medium"
android:text="@string/Account"
tools:context=".AccountActivity" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/padding_medium"
android:text="@string/Saldo"
tools:context=".AccountActivity" />
</LinearLayout>
<ListView
android:id="@+id/habentable"
android:layout_width="match_parent"
android:layout_height="150dp"
/>

<TableLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
>
<TableRow>
<TextView
android:text="@string/description"
/>
<EditText
android:id="@+id/editTextDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:textSize="@dimen/padding_larger"
android:inputType="text"
/>
</TableRow>
<TableRow>
<TextView
android:text="@string/value"
/>
<EditText
android:id="@+id/editTextWert"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:textSize="@dimen/padding_larger"
android:inputType="number|numberDecimal"
/>
</TableRow>
<TableRow>
<Button android:id="@+id/buttonAdd"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:onClick="onClickAddAccount"
android:text="@string/addButton"
android:textSize="@dimen/padding_larger"/>
<Button android:id="@+id/buttonSub"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onClickSubAccount"
android:text="@string/subButton"
android:textSize="@dimen/padding_larger"/>
</TableRow>
</TableLayout>

</LinearLayout>
Ich bin für jegliche Hilfe dankbar. :)


Gruß


Boris
 

Anhänge

  • androidlayout.jpg
    androidlayout.jpg
    70,4 KB · Aufrufe: 231
1)
Tabs sind deprecated -> ViewPager sollte man stattdessen verwenden

2)
TableLayout ist dein Problem. Das ist hier nicht korrekt benutzt. Mach etwas in der Art

<LInearLayout vertical>
<LinearLayout horizontal>
<TextView
text=description
layout_width=wrap_content
layout_height=wrap_content />
<EditText
layout_width=0dip
layout_height=wrap_content
layout_weight=1 />
</linearLayout>
<!---- und die zweite zeile auch gleich >
</linearlayout>


dann sollt es besser klappen
 
  • Danke
Reaktionen: Boris0815
Hallo,

Danke für deine Hilfe. Meine Textfelder passen jetzt schonmal. :)
ViewPager sind in Arbeit.

Hat noch jemand eine Idee wegen der Tastatur? Beim ersten Textfeld ist das weniger ein Problem, da man in der Tastatur sieht was man schreibt,
aber das zweite Textfeld ist rein numerisch, da steht in der Tastaturanzeige nicht was man tippt, und wenn das Textfeld auch noch bedeckt ist, sieht man leider garnichts. Da sind Eingabefehler schon vorprogrammiert. :(

Gruß

Boris
 
android:windowSoftInputMode="adjustPan" in die Manifest zu deiner Activity
 
  • Danke
Reaktionen: Boris0815
und/oder ne scrollview drunter legen, die brauchst sowieso - bedenke kleinere displays
 
Hallo,

das mit der Tastatur funktioniert super. :)

Ich habe jetzt mein Programm mit dem ViewPager umgesetzt. Ansich funktioniert das auch ganz gut. Ich habe nun aber das Problem, dass ich den Inhalt meiner Textboxen nicht erreiche. Kann mir jemand sagen, was ich falsch mache?

Ein Ausschnitt meines Layouts einer Page:

...
<TableLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
>
<TableRow>
<TextView
android:text="@string/description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/editTextDescriptionsoll"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:textSize="@dimen/padding_larger"
android:inputType="text"
/>
</TableRow>
...

In einem Click-Event, welches funktioniert, versuch ich dann folgendes um den Text des Textfeldes zu bekommen. Dieser ist aber immer leer. "et" ist nicht null.

...
LayoutInflater inflater = LayoutInflater.from(this);
View page = inflater.inflate(R.layout.activity_account_soll, null);
EditText et = (EditText)page.findViewById(R.id.editTextDescriptionsoll);
EditText etValue = (EditText)page.findViewById(R.id.editTextWertsoll);
if(et.getText().toString() != null && etValue.getText().toString() != null &&
!et.getText().toString().equals("") && !etValue.getText().toString().equals("")){
...

Danke für eure Hilfe. :)

Gruß

Boris
 
hmm kommt drauf an, wo du deine abfrage drin hast ... beim initialisieren ist das EditText ja leer, hast zumindest keinen Text im xml angegeben.

du brauchst irgendeinen listener oder menü oder backbutton-event was auch immer, damit das lesen des EditText auch angestoßen wird.

ansonsten seh ich keinen fehler im code ...
 
Hallo,

den Quellcode den ich gepostet habe, steht in einem ButtonClick-Event.

public void onClickSubAccount(final View sfNormal)
{
LayoutInflater inflater = LayoutInflater.from(this);
View page = inflater.inflate(R.layout.activity_account_soll, null);
EditText et = (EditText)page.findViewById(R.id.editTextDescriptionsoll);
EditText etValue = (EditText)page.findViewById(R.id.editTextWertsoll);
if(et.getText().toString() != null && etValue.getText().toString() != null &&
!et.getText().toString().equals("") && !etValue.getText().toString().equals("")){
...

Meintest Du das? Der Inhalt des EditText kommt ja durch die Tastatureingabe.

Gruß

Boris
 
ja das meinte ich, wobei ich das inflaten und die beiden EditText auslagern würde (z.B. private EditText etX, etY und dann in onCreate 1x initialisieren).

momentan wirst du bei jedem click ja inflaten und die EditTexts zuweisen. vielleicht ist das auch das problem, daß beim inflaten neu initialisiert wird bzw. das leere layout geladen wird?
 
  • Danke
Reaktionen: Boris0815
Hallo,

jo danke das wars. Hab die EditText direkt in der Klasse deklariert und schon funktionierts. :)

Danke

Boris
 
Kein Problem, ende des Monats schick ich die Rechnung :flapper:
 

Ähnliche Themen

S
Antworten
4
Aufrufe
995
Sempervivum
S
R
Antworten
3
Aufrufe
1.630
Ritartet
R
L
Antworten
4
Aufrufe
1.337
lonnie9020
L
Zurück
Oben Unten