2012-05-08 76 views
18

這是main_alllatestnews.xml的一部分編程方式設置餘量/ TextView的的填充在ListView

<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> 

這是滿的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> 

這是一個部分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); 

正如你所看到的,我用THREE方法來設置列表視圖中的textview的邊距/填充,但不成功。

我使用的是XML文本視圖,而不是創建新的。

我想手動設置,因爲我得到的if/else聲明那裏沒有張貼出來。

我完全不知道如何在java中設置它。

請提供我一個想法,可行的一個,由於

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

你可以在適配器的getView中進行此操作,在此處對版面充氣' –

回答

30

maintitle.setPadding(50, 0, 0, 0);(方法2)應該工作。

我認爲問題是,雖然你在年底做了很多更改TextView的,你有種誇大了新的佈局再次:

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

所以,做一個自定義適配器,然後在getView()中充氣和定製您的TextView

3

要小心,(INT)像素!= DP

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

你究竟是什麼意思?這個問題已經以最好的方式得到了回答,它可能是這樣的,就像你試圖放置一些完全不相關和不清楚的東西一樣,這對任何人都沒有幫助。 –

+1

是的,你說得對。編輯。 –

3

嘗試下面的代碼,它爲我工作。

textView.setX(40);

我的解決方案適用於SDK 14及更高版本。不是在ListView中,而是在RecyclerView中。

相關問題