2012-07-13 72 views
0

我有一個listView中的文章列表,文本在左邊,圖片在右邊。如果文章沒有圖片,我想讓文字變成全角(相對於60dp的marginRight)。我的noob-java思考過程是:我已經循環並檢查在該循環中是否有圖像...(如果有,我更改顯示哪個圖像),我可以以某種方式使用java修改我的視圖的XML以添加或刪除imageView並添加或刪除邊距?帶有文本和圖像的ListView - 如果沒有圖像存在,我可以更改XML(或參數)嗎?

我使用重複通過,並改變圖像的代碼:

ImageLoader imageLoader = ImageLoader.getInstance(); 

    imageLoader.displayImage("", viewHolder.thumbView); //clears previous one 
    if(article.filepath != null && article.filepath.length() != 0) { 
     imageLoader.displayImage(
      "http://img.mysite.com/processes/resize.php?image=" + article.filepath + "&size=100&quality=70", 
      viewHolder.thumbView 
      ); 
    } 

我 「article_entry_list_adapter.xml」:

<?xml version="1.0" encoding="utf-8"?> 

<!-- Layout for individual news entries in a list --> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:padding="10dp" > 

<!-- Title of the news entry --> 
<TextView 
    android:id="@+id/article_title" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginRight="60dp" 
    android:textSize="13sp" 
    android:textStyle="bold" 
    android:textColor="@drawable/list_title_selector" android:typeface="serif"/> 

<!-- Subtitle contains author and date --> 
<TextView 
    android:id="@+id/article_subtitle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginRight="60dp" 
    android:layout_alignLeft="@id/article_title" 
    android:layout_below="@id/article_title" 
    android:textSize="11sp" 
    android:textColor="@drawable/list_subtitle_selector" /> 

<com.sltrib.views.WebImageView 
    android:id="@+id/article_thumbnail" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:adjustViewBounds="true" 
    android:layout_alignParentRight="true" 
    android:background="@color/super_light_gray" 
    android:padding="1dp" 
    android:scaleType="centerCrop" android:cropToPadding="true"/> 

</RelativeLayout> 

回答

2

我建議改變你的xml配置是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:padding="10dp" > 

<!-- Title of the news entry --> 

<com.sltrib.views.WebImageView 
    android:id="@+id/article_thumbnail" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:layout_alignParentRight="true" 
    android:adjustViewBounds="true" 
    android:background="@color/super_light_gray" 
    android:cropToPadding="true" 
    android:padding="1dp" 
    android:scaleType="centerCrop" 
    /> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginRight="5dip" 
    android:layout_toLeftOf="@id/article_thumbnail" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/article_title" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Titol" 
     android:textColor="@drawable/list_title_selector" 
     android:textSize="13sp" 
     android:textStyle="bold" 
     android:typeface="serif" /> 

    <TextView 
     android:id="@+id/article_subtitle" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Subtitol" 
     android:textColor="@drawable/list_subtitle_selector" 
     android:textSize="11sp" /> 

</LinearLayout> 

然後,當沒有圖像,只需設置WebImageView能見度GONE和文本將採取父母的寬度。

你的榜樣:

viewHolder.thumbView.setVisibility(View.VISIBLE); //to show the image 
viewHolder.thumbView.setVisibility(View.GONE); //to hide the image 
+0

這絕對看起來更像我想要的 - 清潔/更有意義。但它不起作用。圖像消失了,但文字仍不能展開以適應寬度。我在MINSDK 8上 - 這有什麼關係嗎? – Dave 2012-07-13 21:33:13

+0

我刪除了60dp marginRight,它的工作原理!比以編程方式更改邊距imo更優雅。謝謝! – Dave 2012-07-13 21:39:00

+0

太好了。我很高興它幫助! – 2012-07-13 21:41:50

0

只需同時循環setVisiblity(VIEW.Gone)article_thumbnail的。

TextView textView = (TextView) findViewById(R.id.textView1); 

    LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    llp.setMargins(50, 0, 0, 0); // llp.setMargins(left, top, right, bottom); 
    textView.setLayoutParams(llp); 
+0

這不照顧的文字雖然 - 它仍然有60dp – Dave 2012-07-13 21:12:45

+0

應該是一個marginRight也可以使一個的LayoutParams並使用該textviews – Mert 2012-07-13 21:14:18

+0

我不知道這意味着什麼 – Dave 2012-07-13 21:14:45

0

你可以改變你的ViewGroup(設置你的ImageView的能見度消失了,編程添加邊緣)或選擇膨脹另一個XML。當你想要做=)

+0

我想我寧願以編程方式隱藏/顯示圖像並刪除/添加邊距......但我該怎麼做? – Dave 2012-07-13 21:13:45

+0

@Dave LayoutParams params = yourView.getLayoutParams(); params.setMargins(...); yourView.setLayoutParams(PARAMS);我認爲像這樣的sthing應該工作 – AMerle 2012-07-13 21:15:30

相關問題