2017-09-26 5 views
0

J'ai 3 éléments dans une disposition linéaire, de gauche à droite une vue de liste de bouton et de recycleur et un deuxième bouton. J'ai un troisième bouton (bouton "disparaître") en dessous de la disposition linéaire mis en place pour faire disparaître le premier bouton en le réglant à disparu. (Ce troisième bouton sert uniquement à tester mais à la fin, je veux que l'état de la vue recycleur envoie ce message.) Lorsque j'appuie sur le bouton "disparaître", le second bouton disparaît également et le recycleur prend en charge tout l'espace alloué au linéaire. disposition. Je crains d'avoir une idée fausse fondamentale sur la façon dont le système Android fonctionne, car j'ai déjà eu des problèmes similaires dans le passé. Est-il nécessaire de réafficher en quelque sorte l'activité si vous changez des choses qui affectent l'agencement? Ma principale activité ressemble à ceAndroid un bouton dans une disposition linéaire disparaît quand un autre est parti.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:weightSum="7" 
     android:id="@+id/linearLayout"> 
     <Button 
      android:id="@+id/first" 
      android:text="First" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1"/> 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/rvNumbers" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:scrollbars="horizontal" 
      android:layout_weight="5"/> 
     <Button 
      android:text="Last" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1"/> 

    </LinearLayout> 
    <Button 
     android:id="@+id/first_off" 
     android:text="turn off first" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/linearLayout" 
     android:layout_alignParentStart="true" 
     /> 
</RelativeLayout> 

Et le code java ressemble à ce

package andre.recyclerview_9_20_2017; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.view.View; 
import android.widget.Button; 
import android.widget.LinearLayout; 

public class MainActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     RecyclerView rvContacts = (RecyclerView) findViewById(R.id.rvNumbers); 
     // Create adapter passing in the sample user data 
     NumberssAdapter adapter = new NumberssAdapter(this, 4000); 
     // Attach the adapter to the recyclerview to populate items 
     rvContacts.setAdapter(adapter); 
     // Set layout manager to position the items 
     LinearLayoutManager layoutManager = new LinearLayoutManager(this, 
       LinearLayoutManager.HORIZONTAL, false); 
     rvContacts.setLayoutManager(layoutManager); 

     Button button = (Button)findViewById(R.id.first_off); 
     button.setOnClickListener(new View.OnClickListener(){ 
      public void onClick(View v){ 
       firstOff(); 
      } 
     }); 

    } 

    void firstOff(){ 
     Button button = (Button)findViewById(R.id.first); 
     button.setVisibility(View.GONE); 
     RecyclerView RecyclerView = (RecyclerView)findViewById(R.id.rvNumbers); 
     LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
     //p.weight = 6; 
     RecyclerView.setLayoutParams(p); 
    } 
} 

note I have left out the code for the recycler view 
my build.gradle looks like this 
apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.3" 
    defaultConfig { 
     applicationId "andre.recyclerview_9_20_2017" 
     minSdkVersion 23 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:25.3.1' 
    compile 'com.android.support:recyclerview-v7:25.3.1' 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    testCompile 'junit:junit:4.12' 
} 

Répondre

0

pas à 100% sûr de ce que vous voulez ACHIVE mais essayez de régler le bouton invisible à l'aide button.setVisibility (View. INVISIBLE) ;, mais en utilisant View.GONE, le bouton est supprimé de la vue.

0

Vous pouvez essayer avec android:layout_alignWithParentIfMissing

De la documentation:

Si vrai, le parent sera utilisé comme l'ancre lorsque l'ancre ne peut être trouvée pour layout_toLeftOf, layout_toRightOf, etc.