2017-09-05 8 views
-1

J'ai une activité de base et une activité principale, mais dans l'activité principale, j'ai appliqué weightsum mais il ne fonctionne pas correctement. Ci-dessous les résultats attendus et le courant enter image description hereLinearLayout, weightSum ne fonctionne pas correctement

MainActivity.java

public class MainActivity extends BaseActivity { 
    LinearLayout dynamicContent,bottonNavBar; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     dynamicContent = (LinearLayout) findViewById(R.id.dynamicContent); 
     bottonNavBar= (LinearLayout) findViewById(R.id.bottonNavBar); 
     View wizard = getLayoutInflater().inflate(R.layout.activity_main, null); 
     dynamicContent.addView(wizard); 
} 
} 

Mainactivity.xml

<?xml version="1.0" encoding="utf-8"?> 
<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:orientation="vertical" 
    android:weightSum="2" 
    android:layout_height="match_parent" 
    android:background="#F5F5F5" 
    tools:context="com.creativeframe.arun.pro.MainActivity"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:background="@drawable/cbseschool" 
     android:orientation="vertical"> 

    </LinearLayout> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:background="@drawable/college" 
     android:orientation="vertical"> 

     </LinearLayout> 

</LinearLayout> 

BaseActivity.java

public class BaseActivity extends AppCompatActivity { 


    RadioGroup radioGroup1; 
    RadioButton home,deals,account,settings; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_base); 
     home = (RadioButton)findViewById(R.id.homebtn); 
     deals = (RadioButton)findViewById(R.id.dealsbtn); 
     account = (RadioButton)findViewById(R.id.accountbtn); 
     settings = (RadioButton)findViewById(R.id.settingbtn); 

     home.setCompoundDrawablesWithIntrinsicBounds(0,R.mipmap.ic_home_white_24dp, 0,0); 
     deals.setCompoundDrawablesWithIntrinsicBounds(0,R.mipmap.ic_navigation_white_24dp, 0,0); 
     account.setCompoundDrawablesWithIntrinsicBounds(0,R.mipmap.ic_about, 0,0); 
     settings.setCompoundDrawablesWithIntrinsicBounds(0,R.mipmap.ic_call_white_24dp, 0,0); 

     radioGroup1=(RadioGroup)findViewById(R.id.radioGroup1); 
     radioGroup1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() 
     { 
      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) 
      { 
       switch (checkedId) 
       { 
        case R.id.homebtn: 
         home.setTextColor(Color.parseColor("#FF4081")); 
         startActivity(new Intent(getBaseContext(),MainActivity.class)); 
         finish(); 
         overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); 
         break; 
        case R.id.dealsbtn: 
         deals.setTextColor(Color.parseColor("#FF4081")); 
         startActivity(new Intent(getBaseContext(), location.class)); 
         finish(); 
         overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); 

         break; 
        case R.id.settingbtn: 
         settings.setTextColor(Color.parseColor("#FF4081")); 
         startActivity(new Intent(getBaseContext(), contact.class)); 
         finish(); 
         overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); 
         break; 
        case R.id.accountbtn: 
         account.setTextColor(Color.parseColor("#FF4081")); 
         startActivity(new Intent(getBaseContext(), about.class)); 
         finish(); 
         overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); 
         break; 
        default: 
         break; 
       } 
      } 
     }); 
    } 
} 
+0

'weightSum' est ** totalement facultatif **. De plus, la taille pondérée (un seul! Choisir entre la largeur OU la hauteur) doit être ** exactement 0dp **. De plus, les dispositions d'imbrication affectent les performances. ** Négativement **. Quelqu'un n'a pas fait ses devoirs, hein? ;) –

+1

Modifier la hauteur de chaque vue enfant à 0dp – codeMagic

+0

Pouvez-vous publier la mise en page que vous gonflez dans 'BaseActivity'? Je pense que le problème est là car votre autre xml semble correct. – codeMagic

Répondre

1

Essayez la suivante dans votre MainActivity .xml

changez votre enfant LinearLayout layout_height de match_parent à 0dp.

<?xml version="1.0" encoding="utf-8"?> 
<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:orientation="vertical" 
android:weightSum="2" 
android:layout_height="match_parent" 
android:background="#F5F5F5" 
tools:context="com.creativeframe.arun.pro.MainActivity"> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:background="@drawable/cbseschool" 
    android:orientation="vertical"> 

</LinearLayout> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:background="@drawable/college" 
    android:orientation="vertical"> 

    </LinearLayout> 

    </LinearLayout> 

Dans MainActivity, définissez votre affichage comme ci-dessous.

public class MainActivity extends BaseActivity { 
LinearLayout dynamicContent,bottonNavBar; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    dynamicContent = (LinearLayout) findViewById(R.id.dynamicContent); 
    bottonNavBar= (LinearLayout) findViewById(R.id.bottonNavBar); 

} 
} 
+2

Il serait préférable d'expliquer * ce * que vous avez changé et * comment * il va résoudre le problème afin que les autres puissent apprendre mieux. – codeMagic

+0

non cela ne fonctionne pas –

+0

s'il vous plaît essayer la réponse éditée. –

1

Pour diviser horizontale, il faut

android:layout_width="0dp" 

et pour une utilisation verticale:

android:layout_height="0dp" 

Exemple:

 <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1"> 
      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:scaleType="fitXY" 
       android:src="@mipmap/ic_launcher"/> 
     </LinearLayout> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1"> 
      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:scaleType="fitXY" 
       android:src="@mipmap/ic_launcher"/> 
     </LinearLayout> 
    </LinearLayout>