2012-05-08 10 views
18

Questa è una parte di main_alllatestnews.xmlprogrammazione set margine/padding di TextView in una lista

<LinearLayout 
    android:id="@+id/layout_content" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@id/layout_menu" 
    android:layout_below="@id/layout_title" 
    android:orientation="vertical" > 
    <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" > 
    </ListView> 
</LinearLayout> 

Questo è pieno di main_alllatestnewslist.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/layout_temp" 
android:layout_width="fill_parent" 
android:layout_height="100px" 
android:background="@drawable/background_news_list" > 

<ImageView 
    android:id="@+id/image_alllatestnewstitle" 
    android:layout_width="134px" 
    android:layout_height="80px" 
    android:layout_marginBottom="5px" 
    android:layout_marginLeft="10px" 
    android:layout_marginRight="10px" 
    android:layout_marginTop="5px" 
    android:scaleType="centerCrop" /> 

<LinearLayout 
    android:id="@+id/test" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/text_particularlatestnewstitle" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textColor="#000000" 
     android:textSize="25px" /> 

    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="25px" > 

     <TextView 
      android:id="@+id/text_newsdate" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#999999" 
      android:textSize="15px" /> 

     <TextView 
      android:id="@+id/text_newscategorytitle" 
      android:layout_width="50px" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:layout_gravity="right" 
      android:gravity="right" 
      android:textColor="#ff0000" 
      android:textSize="15px" /> 
    </RelativeLayout> 
</LinearLayout> 

Questa è una parte di main_alllatestnews.java

LayoutInflater liInflater = (LayoutInflater) this 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    linear.addView(liInflater 
      .inflate(R.layout.main_alllatestnewslist, null)); 
lv = (ListView) findViewById(android.R.id.list); 
for (int i = 0; i < webservice.news.size(); i++) { 
    maintitle = (TextView) findViewById(R.id.text_particularlatestnewstitle); 
    LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)maintitle.getLayoutParams(); 
    layoutParams.setMargins(50, 0, 0, 0);  <-- method one 

    maintitle.setPadding(50, 0, 0, 0);   <-- method two 
    maintitle.setLayoutParams(layoutParams); 

    int margin = 100;       <-- method three 
    ((MarginLayoutParams) maintitle.getLayoutParams()).leftMargin = margin; 
} 
SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, 
      R.layout.main_alllatestnewslist, from, to); 
    lv.setAdapter(adapter); 

Come potete vedere ho usato i metodi THREE per impostare margine/riempimento di vista testo in una lista ma non successo.

Sto usando xml textview invece di creare nuovo.

Voglio impostare manualmente perché ho ottenuto se/else istruzione lì come non pubblicare.

Sono totalmente fuori di idea su come impostarlo in java.

Si prega di fornire me un'idea che una praticabile, grazie

((MarginLayoutParams) maintitle.getLayoutParams()).leftMargin = margin; 
+2

si può fare questo in getView dell'adattatore dove si gonfia il layout ' –

risposta

30

maintitle.setPadding(50, 0, 0, 0); (metodo 2) dovrebbe funzionare.

Credo che il problema è che, anche se si fa un sacco di modifiche al TextView, alla fine è sorta di gonfiare un nuovo layout di nuovo in:

SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, 
      R.layout.main_alllatestnewslist, from, to); 

così, fare un adattatore personalizzato, quindi gonfia e personalizza il tuo TextView nel getView().

3

Attenzione, (int) pixel! = Dp

public int dp2px(int dp) { 
    return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics()); 
} 
+3

Cosa intendete esattamente? Quella domanda è stata già risolta nel modo migliore, potrebbe essere e questo è proprio come stai cercando di inserire qualcosa di totalmente irrilevante e poco chiaro, che non aiuta nessuno. –

+1

Sì, hai ragione. Modificato. –

3

provare il seguente codice, funziona per me.

textView.setX (40);

La mia soluzione è per SDK 14 e versioni successive. Non in ListView ma RecyclerView.

Problemi correlati