1

Ich habe, was ich glaube, eine einfache Linearlayout für eine Aktivität zu sein:Knopf nicht angezeigt, wenn das Layout zu groß erweitert

<LinearLayout 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" 
tools:context="com.example.mille.shithead.firstPlay" 
android:orientation="vertical"> 

<TextView 
    android:id="@+id/fp_TextView_mainText" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textAlignment="center" 
    android:textStyle="bold" 
    android:fontFamily="cursive" 
    android:textSize="30sp" 
    android:visibility="invisible"/> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1"> 
    <LinearLayout 
     android:id="@+id/fp_SV_placeHolder" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_weight="1"> 

    </LinearLayout> 

</ScrollView> 
<Button 
    android:id="@+id/fp_nextButton" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal|center_vertical" 
    android:layout_weight="1" 
    android:textAlignment="center" 
    android:visibility="visible" 
    android:text="Let's Play!"/> 

Innerhalb von fp_SV_placeholder aufblasen ich so viele Kopien des folgenden Layouts, wie ich benötigen, je nachdem, wie viele Spieler in der aktuellen Instanz des Spiels ist:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_weight="1" 
android:layout_gravity="center_horizontal|center_vertical"> 
<TextView 
    android:id="@+id/fp_TV_player" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textAlignment="center" 
    android:textStyle="bold" 
    android:fontFamily="cursive" 
    android:textSize="15sp" 
    /> 
<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_gravity="center_horizontal|center_vertical"> 
    <ImageView 
     android:id="@+id/fp_IV_tableUp1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:adjustViewBounds="true" 
     android:gravity="center_horizontal|center_vertical" 
     android:padding="4dp" 
     android:scaleType="centerInside" 
     android:src="@drawable/i_back" /> 

    <ImageView 
     android:id="@+id/fp_IV_tableUp2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:adjustViewBounds="true" 
     android:gravity="center_horizontal|center_vertical" 
     android:padding="4dp" 
     android:scaleType="centerInside" 
     android:src="@drawable/i_back" /> 

    <ImageView 
     android:id="@+id/fp_IV_tableUp3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:adjustViewBounds="true" 
     android:gravity="center_horizontal|center_vertical" 
     android:padding="4dp" 
     android:scaleType="centerInside" 
     android:src="@drawable/i_back" /> 
</LinearLayout> 

Das funktioniert wie vorgesehen mit meinem Code, und die richtigen Displays erscheinen mit den richtigen Kartenbildern wie erwartet. Allerdings, wenn ich mehr als zwei Spieler in meinem Spiel haben, auf die Taste, um die nächste Aktivität zu bewegen ist seltsam fehlt:

Button does not appear

Hier ist der Code, wo ich die verschiedenen Spieler die Karten aufblasen und stellen Sie die OnClickListener für die Taste:

String display = "Looks like " + players.get(firstPlayerIndex).getName() + " goes first!"; 
    if (!firstPlayer.isComputer()) { 
     display = "Looks like You go first!"; 
    } 
    textViews.get(0).setText(display); 

    ViewGroup vg = (ViewGroup) findViewById(R.id.fp_SV_placeHolder); 

    for (int i = 0; i < game.getPlayers().size(); i ++) { 
     //Inflate Player display and find TV and IV's 
     View v = getLayoutInflater().inflate(R.layout.fp_player_top_3, vg, false); 
     TextView textView = (TextView) v.findViewById(R.id.fp_TV_player); 
     ImageView iv_Card1 = (ImageView) v.findViewById(R.id.fp_IV_tableUp1); 
     ImageView iv_Card2 = (ImageView) v.findViewById(R.id.fp_IV_tableUp2); 
     ImageView iv_Card3 = (ImageView) v.findViewById(R.id.fp_IV_tableUp3); 

     //Set TextView display 
     String textViewDisplay = "Your Top 3 Cards"; 
     if(players.get(i).isComputer()) { 
      textViewDisplay = players.get(i).getName(); 
     } 
     textView.setText(textViewDisplay); 
     //set ImageView Displays 
     int resID1 = getResources().getIdentifier(players.get(i).getTableUp().get(0).getImageIDString(),"drawable",getPackageName()); 
     iv_Card1.setImageResource(resID1); 
     int resID2 = getResources().getIdentifier(players.get(i).getTableUp().get(1).getImageIDString(),"drawable",getPackageName()); 
     iv_Card2.setImageResource(resID2); 
     int resID3 = getResources().getIdentifier(players.get(i).getTableUp().get(2).getImageIDString(),"drawable",getPackageName()); 
     iv_Card3.setImageResource(resID3); 

     if(i == firstPlayerIndex) { 
      v.setBackgroundColor(Color.BLUE); 
     } 
     //attach to the root 
     vg.addView(v); 
    } 
    nextButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Class nextClass = playerTurn.class; 
      if (firstPlayer.isComputer()) { 
       nextClass = computerTurn.class; 
      } 
      Intent intent = new Intent(getApplicationContext(),nextClass); 
      startActivity(intent); 
     } 
    }); 

die Taste funktioniert als so lange gedacht, wie es sichtbar ist, aber es muss sichtbar sein, egal wie viele Spieler im Spiel ist auf einmal. Irgendwelche Vorschläge? Ich habe versucht, einfach den Button in der scrollView zu bewegen und die App brach beim Versuch, die Seite zu laden.

+0

so die 'fp_nextButton' nicht angezeigt wird? das ist das Problem? – rafsanahmad007

Antwort

1

Scrollview nicht belasten. Es funktioniert nicht gut mit Scrollview. ScrollView ignoriert das Gewicht und nimmt die Höhe entsprechend der Höhe des Inhalts an. So, es zu lösen, müssen Sie Scrollview in einem linearen Layout halten und Gewicht verleihen lineares Layout statt Scroll

`<LinearLayout 
     android:id="@+id/fp_SV_placeHolder" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:orientation="vertical"> 

     <ScrollView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

      <LinearLayout 
       android:id="@+id/fp_SV_placeHolder" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:orientation="vertical" /> 
     </ScrollView> 
    </LinearLayout>` 
+0

Das funktionierte, und der Button war am unteren Bildschirmrand anklickbar, egal wie viele Spieler er hatte, aber der Button wurde immer noch nicht richtig angezeigt ... er war unendlich klein oder so. Durch Entfernen des Gewichtsparameters von der Schaltfläche bleibt er nun sichtbar und klickbar. Ich danke dir sehr! –

+0

Ich habe nicht gesehen, dass Sie dem Knopf auch Gewicht gegeben haben, wenn Sie beiden Gewicht geben, wird es versuchen, beide Ansichten nach Gewicht anzupassen, aber wenn Sie nur einer Ansicht Gewicht geben, dann gebe ich jeder Ansicht die richtige Höhe und passen Sie sich im verbleibenden verfügbaren Speicherplatz an. –

Verwandte Themen