Dans une rangée de table, il y a une vue horizontale de défilement contenant une mise en page linéaire,
L'intention est de placer 5 imageView dans la mise en page linéaire dynamiquement
Le problème est qu'il semble que l'imageview est décalée et que la disposition linéaire ne remplit pas la vue horizontale de défilement p>
Voici le XML: P > la disposition liniear mentionnée est et le code est comme suit: p> int mMaxCount = 5;
ImageView[]mImageView = new ImageView[mMaxCount];
LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
//params1.setMargins(10, 75, 0, 0);
params1.setMargins(100, 0, 0, 0);
params1.height = 200;
params1.width = 200;
LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
//params2.setMargins(100, 85+20, 0, 0);
params2.setMargins(100, 0, 0, 0);
params2.height = 170;
params2.width = 170;
LinearLayout.LayoutParams params3 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
//params3.setMargins(100, 95+20, 0, 0);
params3.setMargins(100, 0, 0, 0);
params3.height = 140;
params3.width = 140;
LinearLayout.LayoutParams params4 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
//params4.setMargins(100, 105+20, 0, 0);
params4.setMargins(100, 0, 0, 0);
params4.height = 110;
params4.width = 110;
LinearLayout.LayoutParams params5 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
//params5.setMargins(100, 115+20, 0, 0);
params5.setMargins(100, 0, 0, 0);
params5.height = 80;
params5.width = 80;
params5.gravity = Gravity.CENTER;
mLayoutStruct.getLayout_table_3_Row_7_HSV1LL().setGravity(Gravity.CENTER);
for (int i = 0; i < mMaxCount; i++)
{
mImageView[i] = new ImageView(mContext);
//mImageView[i].setBackgroundColor(Color.TRANSPARENT);
mImageView[i].setTag("T"+"I"+i);
mImageView[i].setId(i);
mImageView[i].setFocusable(true);
mImageView[i].setClickable(true);
if (i == 0)
{
//Picasso.with(mContext).load(R.drawable.size1).placeholder(R.drawable.ic_launcher).resize(200, 200).into(mImageView[i]);
mImageView[i].setBackgroundResource(R.drawable.size1);
mLayoutStruct.getLayout_table_3_Row_7_HSV1LL().addView(mImageView[i], params1);
}
else if (i == 1)
{
//Picasso.with(mContext).load(R.drawable.size1).placeholder(R.drawable.ic_launcher).resize(170, 170).into(mImageView[i]);
mImageView[i].setBackgroundResource(R.drawable.size1);
mLayoutStruct.getLayout_table_3_Row_7_HSV1LL().addView(mImageView[i], params2);
}
else if (i == 2)
{
//Picasso.with(mContext).load(R.drawable.size1).placeholder(R.drawable.ic_launcher).resize(140, 140).into(mImageView[i]);
mImageView[i].setBackgroundResource(R.drawable.size1);
mLayoutStruct.getLayout_table_3_Row_7_HSV1LL().addView(mImageView[i], params3);
}
else if (i == 3)
{
//Picasso.with(mContext).load(R.drawable.size1).placeholder(R.drawable.ic_launcher).resize(110, 110).into(mImageView[i]);
mLayoutStruct.getLayout_table_3_Row_7_HSV1LL().addView(mImageView[i], params4);
}
else if (i == 4)
{
//Picasso.with(mContext).load(R.drawable.size1).placeholder(R.drawable.ic_launcher).resize(80, 80).into(mImageView[i]);
mImageView[i].setBackgroundResource(R.drawable.size1);
mLayoutStruct.getLayout_table_3_Row_7_HSV1LL().addView(mImageView[i], params5);
}
}
3 Réponses :
Pour le point ci-dessous, vous devez modifier le code comme indiqué ci-dessous. P>
"Un autre point est lorsque vous faites défiler horizontalement, je viens de voir 4 imageview's's's's's's's's's's's's's's's's est au lieu de 5" P>
pour (int i = 0; i à p>
pour (int i = 0; i <= mmAxcount; i ++) p>
Vous voyez 4 imageview parce que vous oubliez d'ajouter p> à l'intérieur de votre sinon si (i == 3) code> donc il ajoute imageview avec fond vide qui n'est pas visible. p> P> pour couvrir Toutes les couleurs blanches de votre vue horizontale de votre défilement par rouge Vous devez définir
Android: FiNDViewPort = "true" code> sur le
HorizEnSalScrollView code> Comme ci-dessous: P>
<HorizontalScrollView
android:id="@+id/table_3_Row_7_HSV1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:layout_span="3"
android:background="#FFFFFF"
android:fadeScrollbars="false"
android:focusable="true"
android:focusableInTouchMode="true"
android:scrollbarSize="0.5mm"
android:scrollbarThumbHorizontal="@color/gray"
android:scrollbars="horizontal">
Désolé, modifier le code dans Stackoverflow J'ai oublié de l'ajouter, quand il est ajouté, je vois toujours 4 imageview's's, à part cet Android: Fidviedport = "vrai" n'a pas fonctionné
@Androidhv Essaye Android: Layout_width = "match_parent" et Android: Fidvieport = "true" en même temps pour votre horizontalscrollsview
J'ai résolu le problème de
1 - Suppression Android: Layout_gravity = "Centre" code> de la linearlayout
2 - UTILISATION DE SETPADDING à la vue Scroll horizontale pour le décaler au centre de la rangée de table p>
Pourquoi ne pas utiliser la vue Recycler?
API 22 est le début de la vue Recycler, j'ai besoin de moins