2012-04-24 45 views
0

我已經創建了一個自定義ListView,其中我添加了兩個TextView,TextView之一顯示日期,其他TextView顯示在該特定日期輸入的權重。現在我想要的是在第二個TextView顯示權重,文本視圖的寬度設置爲用戶輸入的權重。我寫的代碼顯示了一些問題。意味着當用戶輸入重量70和75時,寬度TextView顯示相同的尺寸。爲什麼會這樣。請任何人都幫我解決這個問題。對於列表活動如何在textView中設置不同的寬度

XML代碼

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/relativeLayout1" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@drawable/img_allnotes_bg" > 

<TextView 
    android:id="@+id/txt_weight_title" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/image_divder1" 
    android:layout_marginTop="15dp" 
    android:gravity="center_horizontal|center_vertical" 
    android:text="@string/txt_weight_title" 
    android:textColor="#5f5f5f" 
    android:textSize="@dimen/font_size_page_text" > 
</TextView> 


<ListView 
    android:id="@+id/weight_list_view" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/bottom_control_bar" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/image_divider2" 
    android:layout_marginBottom="15dp" 
    android:layout_marginTop="2dp" 
    android:cacheColorHint="#00000000" 
    android:divider="@null" 
    android:dividerHeight="0dp" 
    android:listSelector="#00000000" > 
</ListView> 

XML代碼列表視圖項

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

<TextView 
    android:id="@+id/txt_weightdate_display" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="60dp" 
    android:layout_marginRight="60dp" 
    android:focusable="false" 
    android:textColor="#5f5f5f" 
    android:textSize="@dimen/font_size_page_text" > 
</TextView> 
<TextView 
    android:id="@+id/txt_weight_display" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/txt_weightdate_display" 
    android:layout_marginLeft="60dp" 
    android:layout_marginRight="60dp" 
    android:layout_marginTop="5dp" 
    android:gravity="center" 
    android:focusable="false" 
    android:textColor="#5f5f5f" 
    android:background="#00FFFF" 
    android:textSize="@dimen/font_size_page_text" > 
</TextView> 

Java代碼生成列表視圖

public void displayWeights() 
{ 
    m_allWeightsList = (ListView) findViewById(R.id.weight_list_view); 

    int iWeightCount = CycleManager.getSingletonObject().getWeightCount(); 

    m_weightsdateDisplay = new String[iWeightCount]; 

    m_weightDisplay = new String[iWeightCount]; 

    m_enStage = new int[iWeightCount]; 

    int i;  

    for (i=0; i<iWeightCount; i++) 
    { 
     m_weightsdateDisplay[i] = ""; 

     Date dtWeightDate = CycleManager.getSingletonObject().getWeightDate(i); 

     m_enStage[i] = CycleManager.getSingletonObject().getCycleStage(dtWeightDate); 

     m_weightsdateDisplay[i] = formator.format(dtWeightDate.getTime()); 

     m_weightDisplay[i] = ""; 

     m_weightDisplay[i] = CycleManager.getSingletonObject().getWeight(dtWeightDate); 
    } 

    m_adapter = new AllWeightsAdapter(this, m_weightsdateDisplay, m_weightDisplay); 

    m_allWeightsList.setAdapter(m_adapter); 

} 

class AllWeightsAdapter extends BaseAdapter 
{ 
    public String m_weightsDateDisplay[]; 

    public String m_weightsDisplay[]; 

    public Activity m_context; 

    public LayoutInflater m_inflater; 

    public AllWeightsAdapter(Activity m_context, String[] m_weightsDateDisplay, String[] m_weightsDisplay) 
    { 
     super(); 

     this.m_context = m_context; 

     this.m_weightsDateDisplay = m_weightsDateDisplay; 

     this.m_weightsDisplay = m_weightsDisplay; 

     this.m_inflater = (LayoutInflater)m_context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
    } 
    public AllWeightsAdapter() 
    { 

    } 
    public int getCount() 
    { 
     return m_weightsDateDisplay.length; 
    } 

    public Object getItem(int position) 
    { 
     return null; 
    } 

    public long getItemId(int position) 
    { 
     return 0; 
    } 

    public class ViewHolder 
    { 
     TextView txt_weightdt_display; 

     TextView txt_weight_display; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     ViewHolder holder; 

     Typeface face = Typeface.createFromAsset(m_context.getAssets(), "fonts/Cicle Semi.ttf"); 

     if(convertView == null) 
     { 
      holder = new ViewHolder(); 
      convertView = m_inflater.inflate(R.layout.all_weights_list, null); 

      holder.txt_weightdt_display = (TextView) convertView.findViewById(R.id.txt_weightdate_display); 
      holder.txt_weight_display = (TextView) convertView.findViewById(R.id.txt_weight_display); 
      convertView.setTag(holder); 
     } 
     else 
     { 
      holder = (ViewHolder)convertView.getTag(); 
     } 

     // Added Weight Date in List View Component 
     holder.txt_weightdt_display.setText(m_weightsDateDisplay[position]); 
     holder.txt_weightdt_display.setTypeface(face); 

     // Added Weights in List View Component  
     double factor, width, scale, borderwidth, minScreenWidth = 40, maxScreenWidth = 200; 
     double maxWeight = CycleManager.getSingletonObject().getMaxWeight(); 
     double minWidth = CycleManager.getSingletonObject().getMinWeight(); 

     scale = maxWeight - minWidth; 
     factor = (maxScreenWidth - minScreenWidth)/scale; 

     width = (maxWeight - Double.parseDouble(m_weightsDisplay[position])) * factor; 
     borderwidth = maxScreenWidth - width; 

     holder.txt_weight_display.setText(m_weightsDisplay[position]); 
     holder.txt_weight_display.setMinWidth((int)borderwidth); 
     holder.txt_weight_display.setTypeface(face); 

     return convertView; 
    } 
} 
} 

Screnn拍攝

enter image description here

+0

我猜70是> =最大尺寸對於視圖,請嘗試一些值,如60,65。如果是這樣,那麼可以將寬度改爲一半,以避免達到最大尺寸 – MikeIsrael 2012-04-24 07:25:39

+0

但是視圖寬度是包裝內容..如何解決我的問題因此,我已經進入寬度的重量是沿着這個調整... – AndroidDev 2012-04-24 07:30:25

+0

改變你的縮放比例,以便它的長度更小。你可以玩弄視圖以及爲該元素提供更多空間 – MikeIsrael 2012-04-24 07:35:55

回答

0

的左/右頁邊距它們是60dps每個可能的問題。你的空間花費120dps。 http://android-developers.blogspot.com/2011/07/new-tools-for-managing-screen-sizes.html表示手機的屏幕尺寸爲320dp寬。

此外,我不確定CycleManager是做什麼的,但如果不這樣做,可能會定義最大值,您應該使用設備的屏幕寬度和相應的縮放比例。

最後,我想這是不相關的,但你使用wrap_content爲listview。你不覺得讓fill_parent更合適嗎?

0

OK @Anshuman這是一個屏幕實體的問題。 70和75是相同的大小,因爲你已經超出了你對該視圖的空間。嘗試更改該藍色標記的比例。也許像這樣的東西會給你更多的空間(只是玩弄shrinkScaler變量,直到你得到你需要的大小,以適應你想要的所有重量

double shrinkScaler = .75; 
holder.txt_weight_display.setMinWidth((int)(borderwidth * shrinkScaler)); 
相關問題