簡體   English   中英

Android ImageView縮放沖突

[英]Android ImageView scaling conflict

我在代碼中創建ImageView

ImageView vlogo = new ImageView(v.getContext());
        RelativeLayout.LayoutParams vlogoParams = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);
        vlogoParams.addRule(RelativeLayout.ALIGN_TOP,tv_visitor.getId());
        vlogoParams.addRule(RelativeLayout.ALIGN_LEFT, tv_visitor.getId());
        vlogoParams.addRule(RelativeLayout.ALIGN_BOTTOM, tv_visitor.getId());
        vlogo.setLayoutParams(vlogoParams);
        vlogo.setImageResource(R.drawable.star);
        rl.addView(vlogo);

通過將圖像與先前創建的tv_visitor視圖(已添加到相對布局)的TOPBOTTOM對齊來“縮放”圖像。 但我認為它還沒有布局(?)。 .requestLayout就在這段代碼沒有改變之前。 圖片

通過這樣做,我將ImageView的高度設置為tv_visitor視圖的高度。 哪個可以。 然而寬度似乎保持原始。

這就是問題所在。 寬度保持不縮放。 我這樣做的方法是制作.setAdjustViewBounds(true); 不工作 那我該怎么辦呢?

根據評論中的要求,我提供了更多信息:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/news_scrollView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ff000000"
    android:scrollbars="none">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/fragment_news2">
    <View
        android:id="@+id/anchor_n"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#ffbb00"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true" />
</RelativeLayout>
</ScrollView>

視圖作為參數傳遞,布局通過以下方式獲得:

RelativeLayout rl = (RelativeLayout) v.findViewById(R.id.fragment_news2);

問題是由於Imageview的縮放,因為默認情況下imageview使用的是ImageView.ScaleType.FIT_CENTER 根據文檔,FIT_CENTER執行以下操作:

計算將保持原始src寬高比的比例,但也將確保src完全適合dst。 至少一個軸(X或Y)將完全適合。 結果集中在dst內

由於圖像被調整大小並居中,因此您在左側和右側都看到了額外的空間。 為了避免將ScaleType設置為ImageView.ScaleType.FIT_END而將結果右對齊將解決問題。

vlogo.setScaleType(ImageView.ScaleType.FIT_END);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM