2016-03-22 13 views
3

In meiner App habe ich einige Spinner (von denen jeder Teil eines Fragments ist) in einem ScrollView. Diese scrollView befindet sich unterhalb einer textView.Android Spinner Pfeil immer über anderen Ansichten

Das Problem ist, dass, wenn ich die App auf meinem Testgerät (Samsung Galaxy S6 Edge [G925F], API 23), der kleine Pfeil des Spinner bleibt sichtbar über die Textansicht, obwohl der Rest von der Spinner ist schon außer Sichtweite.

Ich habe viel recherchiert aber konnte keine Lösungen finden, also frage ich hier: Was muss ich tun, damit die Pfeile verschwinden wie der Rest des Spinner?

Hier einige Bilder:

In diesem Bild können Sie die Textview an der Spitze der Aktivität und unter den Spinnern sehen, bevor ich

In diesem Screenshot unten gescrollt, können Sie sehen, das Problem. Die kleinen Dreiecke des Spinner sind noch sichtbar, aber der Spinner selbst ist bereits aus der Sicht gescrollt. Hier

ist der XML-Code des Fragments mit dem Spinner:

<?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="match_parent"> 
<LinearLayout 
    android:id="@+id/fragLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <TextView 
     android:id="@+id/gradeDisplay" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginStart="15dp" 
     android:layout_marginLeft="15dp" 
     android:text="1" 
     android:textSize="30dp"/> 
    <Spinner 
     android:id="@+id/spinner" 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="30dp" 
     android:layout_marginLeft="15dp" 
     android:layout_marginRight="15dp" 
     android:entries="@array/grades"/> 
    <ImageButton 
     android:id="@+id/imageButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="15dp" 
     android:layout_marginEnd="15dp" 
     android:layout_marginRight="15dp" 
     android:src="@drawable/ic_remove_black_24dp" 
     android:background="@null"/> 
</LinearLayout> 
<Space 
    android:layout_width="0dp" 
    android:layout_height="5dp" 
    android:layout_below="@id/fragLayout"/> 
</RelativeLayout> 

Und hier ist der Code des MainActivitys Inhalts:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context="de.jeanma.android.avo.MainActivity" 
tools:showIn="@layout/activity_main"> 
    <Space 
     android:id="@+id/mainContentSpace" 
     android:layout_width="match_parent" 
     android:layout_height="16dp" /> 
    <TextView 
     android:id="@+id/textView" 
     android:layout_below="@id/mainContentSpace" 
     android:layout_width="match_parent" 
     android:text="Standard text" 
     android:layout_height="wrap_content" 
     android:textSize="40dp" 
     android:gravity="end"/> 
    <ScrollView 
     android:id="@+id/scrollView" 
     android:layout_below="@id/textView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <LinearLayout 
      android:id="@+id/layout" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:divider="@drawable/divider" 
      android:showDividers="middle"> 
     </LinearLayout> 
    </ScrollView> 
</RelativeLayout> 

Die Fragmente an das Linearlayout hinzugefügt werden (@ id/layout) durch eine Java-Methode. Wenn nötig, werde ich das hier auch posten.

Ich bin mit Java 1.8.05 und das Ziel SDK 23 ist, ist das Minimum 14 Der Code in Android Studio geschrieben

Die Textview mit den Problemen sind die @id/textView, die große Zahl an der Anzeige oben.

+0

Das ist seltsam zu beheben. Ist die 0,0 die Textansicht? Was ist das für eine ID und in welchem ​​Layout? –

+2

Dies ist nicht die Antwort, aber: fügen Sie ein Fragment für jeden Spinner in diesem Scrollview hinzu? Ist das nicht ein bisschen übertrieben? Sollte besser sein, einfache ListView oder RecyclerView zu verwenden, es sei denn, Sie brauchen wirklich so viele Fragmente. – Wukash

+0

Ja, das ist die textView. Seine ID ist '@ id/textView'. @ScriptKitty – Jeanma

Antwort

0

Ich habe jetzt einen Workaround ausgeführt. Wie vorgeschlagen, da ich die Hintergrundfarbe des textView die gleiche wie meine Aktivität setze, zeigt der Pfeil, wo nicht mehr angezeigt wird. Aber der Raum hat sich anders verhalten. Da hat es sich geändert, dass ich die Hintergrundfarbe geändert habe. Also habe ich es einfach entfernt. (Es sieht immer noch gut aus).

Die aktualisierte XML-Datei seit dem MainActivity'a Inhalt kann hier gesehen werden:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context="de.jeanma.android.avo.MainActivity" 
tools:showIn="@layout/activity_main"> 
    <TextView 
     android:id="@+id/textView" 
     android:layout_width="match_parent" 
     android:text="Standard text" 
     android:layout_height="wrap_content" 
     android:textSize="40dp" 
     android:gravity="end" 
     android:background="#FAFAFA"/> 
    <ScrollView 
     android:id="@+id/scrollView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView"> 
     <LinearLayout 
      android:id="@+id/layout" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:divider="@drawable/divider" 
      android:showDividers="middle"> 
     </LinearLayout> 
    </ScrollView> 
</RelativeLayout> 

Aber weil die Pfeile auch die Polsterung warf zeigten, änderte ich meine

src\main\res\values\dimens.xml an folgenden (ich weiß, dass die wirklich schlechte Praxis):

<resources> 
    <!-- Default screen margins, per the Android Design guidelines. --> 
    <dimen name="activity_horizontal_margin">16dp</dimen> 
    <dimen name="activity_vertical_margin">0dp</dimen><!-- This was changed from 16dp to 0dp --> 
    <dimen name="fab_margin">16dp</dimen> 
</resources> 

Dank @ScriptKity @Wukash @Bryan für Ihre Unterstützung

1

@jeanma Sie das Problem mit nur Einstellung

android:background="#00FFFFFF" 

für Ihre Scroll oder Wurzellinearlayout des Scroll