0

我試圖生成一個bitmap顯示在通知中。佈局有點複雜,但是,我需要根據屏幕尺寸設置寬度。在XML中,我在根LinearLayout和我膨脹與android充氣視圖不尊重動態設置寬度

LinearLayout v = (LinearLayout) i inflater.inflate(R.layout.notification_expanded_detail, null, false); 

這種佈局有相當一堆我需要填寫元件的視圖。它們的寬度取決於佈局本身的寬度,佈局的寬度因手機而異。我

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams((int) available_width, LinearLayout.LayoutParams.WRAP_CONTENT); 
v.setLayoutParams(params); 

但是設置寬度爲膨脹的佈局,當我嘗試生成這個bitmap,似乎與setLayoutParams設置的大小是不影響充氣佈局的子視圖。 SO中有很多關於我的問題,但是,它們都是在擴充已經有rootView的佈局,而且沒有任何效果。一些答案建議我在視圖上調用measure()方法。但是,在調用度量方法之後,getMeasuredWidth返回的寬度稍小於我用setLayoutParams調用設置的寬度。我不太確定我在這裏錯過了什麼。任何幫助將非常感激。謝謝!

更新: 更多關於該問題的內容。我試圖展示一個有一個佔位符ImageView的通知,稍後我將使用從XML擴展的視圖生成的位圖來填充該通知。遠程視圖佈局是

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/sliderViewBottom" 
android:layout_width="match_parent" 
android:layout_height="256dp" 
android:background="@color/detail_page_blue" 
android:clickable="true" 
android:focusable="false" 
android:orientation="vertical" 
android:gravity="center" 
android:padding="10dp" 
> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:background="@color/white" 
     > 

     <ImageView 
      android:id="@+id/progressImage" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      /> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#D05757" 
      android:gravity="center" 
      android:paddingBottom="8dp" 
      android:paddingTop="8dp" 
      > 

      <TextView 
       android:id="@+id/overAllDelay" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Delayed by " 
       android:textColor="@color/white" 
       /> 

      <TextView 
       android:id="@+id/overAllDelayVal" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_toRightOf="@id/overAllDelay" 
       android:text="-" 
       android:textColor="@color/white" 
       /> 
     </RelativeLayout> 

    </LinearLayout> 

,我試圖膨脹併產生位圖從在progressImage設置的佈局是

<RelativeLayout 
    android:id="@+id/swipe_page_track_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingBottom="10dp" 
    android:paddingLeft="@dimen/swipe_layout_info_card_track_margin" 
    android:paddingRight="@dimen/swipe_layout_info_card_track_margin" 
    > 

    <ImageView 
     android:id="@+id/fromGreenCircle" 
     android:layout_width="10dp" 
     android:layout_height="10dp" 
     android:layout_alignParentLeft="true" 
     android:layout_marginTop="1dp" 
     android:src="@drawable/from_green_circle"/> 

    <ImageView 
     android:layout_width="10dp" 
     android:layout_height="10dp" 
     android:layout_alignParentRight="true" 
     android:layout_marginTop="1dp" 
     android:src="@drawable/station_end"/> 

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="3dp" 
     android:layout_alignParentRight="true" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:layout_marginTop="4.5dp" 
     android:background="@drawable/swipe_page_empty_track" 
     /> 

    <ImageView 
     android:id="@+id/fromGreenTrack" 
     android:layout_width="105dp" 
     android:layout_height="3dp" 
     android:layout_alignParentLeft="true" 
     android:layout_marginTop="4.5dp" 
     android:src="@drawable/from_green_track" 
     /> 

    <ImageView 
     android:id="@+id/trackNavigationIcon" 
     android:layout_width="12dp" 
     android:layout_height="12dp" 
     android:layout_marginLeft="100dp" 
     android:src="@drawable/ic_track_detail_card_current_station_pointer" 
     /> 

    <TextView 
     android:id="@+id/currentStatus" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/trackNavigationIcon" 
     android:layout_marginTop="10dp" 
     android:textColor="@color/black" 
     /> 
</RelativeLayout> 

我試圖膨脹該第二佈局與

LinearLayout v = (LinearLayout) i inflater.inflate(R.layout.notification_expanded_detail, null, false); 

然後是使用

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams((int) available_width, LinearLayout.LayoutParams.WRAP_CONTENT); 
v.setLayoutParams(params); 

這個available_width是動態計算的。但是,當我後來試圖通過使用v.layout()從這個充氣視圖生成一個位圖時,它不會生成不符合我設置的寬度的圖像。

後來,我遇到了this SO線程,我注意到,雖然充氣,而不是指定null作爲父視圖,指定new LinearLayoutParams(contex)。我試過,現在,動態設置的寬度正在兌現

+0

這是爲了狀態欄通知? – Karakuri

+0

它用於在通知中設置bigContentView。謝謝 –

+0

然後我不明白你的問題。狀態欄通知UI是使用'RemoteViews'配置的,而不是通過正常的視圖膨脹和修改。也許你應該澄清你在問什麼,幷包含額外的代碼片段。 – Karakuri

回答

0

我碰到這個SO線程,我注意到,雖然膨脹,而不是指定null作爲父視圖,指定了新的LinearLayoutParams(contex)。我試過,現在,動態設置的寬度正在兌現