我有一个带背景图片的布局。图像宽度应与屏幕宽度(match_parent)相同。但它很丑陋,操作系统不会将图片拉伸到高处。 我听说过ImageView scaleType,所以我在ImageView中有背景图片而不是布局背景,但是我无法配置成我想要的。
如何设置布局或ImageView缩放图像(宽度)以适应屏幕宽度并使用相同比例缩放高度?
我想要图片中的第二个屏幕:
更新:
我正在尝试使用代码,但是我获得了0宽度+我无法相信这不能通过带有ImageView的xml来完成。
Drawable imageDrawable = getResources().getDrawable(imageResource);
contentContainer.setBackgroundDrawable(imageDrawable);
Rect rect = imageDrawable.getBounds();
int originalWidth = rect.width();
int originalHeight = rect.height();
Display display = getActivity().getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = originalHeight * (width/originalWidth);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(width, height);
contentContainer.setLayoutParams(layoutParams);
contentContainer.post(new Runnable() {
@Override
public void run() {
contentContainer.setScaleY(contentContainer.getScaleX());
Rect rect = contentContainer.getBackground().getBounds();
int originalWidth = rect.width();
int originalHeight = rect.height();
Display display = getActivity().getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = originalHeight * (width/originalWidth);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(width, height);
contentContainer.setLayoutParams(layoutParams);
}
}
答案 0 :(得分:0)
将FrameLayout用作父级,然后将imageview添加为子级。
答案 1 :(得分:0)
将宽度 match_parent 和高度 fill_parent 添加到imageView,另一种方法是应用 android:layout_weight 属性尝试这可能是它的工作
答案 2 :(得分:0)
您可以在运行时通过测量设备的宽度来执行此操作: -
super.onCreate(savedInstanceState);
setContentView(<layout-resoure-id);
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
int imageSize = 0;
if (width > height)
imageSize = height;
else
imageSize = width;
ImageView imageView = (ImageView) findViewById(R.id.imageView);
imageView.getLayoutParams().width = imageSize;
imageView.getLayoutParams().height = imageSize;
imageView.setImageResource(R.drawable.pattu);
你的xml: -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="10dp"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView"
android:layout_width="100dp"
android:layout_height="100dp"
android:scaleType="fitXY"/>
</LinearLayout>
享受...!
答案 3 :(得分:0)
您是否尝试在布局文件中使用scaleType?
<ImageView
...
android:scaleType="fitStart"
/>
这应该缩放图像以适合布局的顶部,必要时拉伸或缩小。 Haven没有机会测试(我无法记住高度/宽度设置 - 抱歉!),但这可能是一个解决方案。
答案 4 :(得分:0)
protocol AlarmClockType {
var alarmLabel: String { get set }
var sound: AlarmSound { get set }
var snooze: Bool { get set }
var alarmType: AlarmType { get set }
var alarmOn: Bool { get set }
var alarm: NSTimer? { get set }
var attributedTitle: NSMutableAttributedString { get }
static var DocumentsDirectory: NSURL { get }
static var ArchiveURL: NSURL { get }
func timeToAlarm(prayerTimes: [String: String]?) -> NSDate
}
}
你的配置就在这里!
ImageView imageView = (ImageView) findViewById(R.id.your_image_id);
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;
int imageSize = height>width?width:height;
你应该将imageView scaletype设为fitXY,并按照你想要的方式拉伸图像!
imageView.getLayoutParams().width = imageSize;
imageView.getLayoutParams().height = imageSize + (/* additional height logic*/);