我有5个方形的ImageButtons,我想在屏幕的底部并排排列.我有每一组(不同的id):
<ImageButton
android:id="@+id/box1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:layout_weight="1"
android:layout_margin="1dp"
/>
Run Code Online (Sandbox Code Playgroud)
我在主java中分配了这样的背景:
int[] imageIds = new int[] {R.id.box1,R.id.box2,R.id.box3,R.id.box4,R.id.box5};
for(int i = 0; i<5; i++){
imageButtons[i] = (ImageButton) findViewById(imageIds[i]);
imageButtons[i].setBackgroundResource(R.drawable.blank);
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是缩放宽度以便在屏幕底部整齐地并排放置(现在可以正常使用),但是高度也会自动缩放以匹配宽度.这可能吗?我不想使用setImageSource,因为它在图像按钮周围放置了一个边框.
如何在Qt中维护窗口小部件的宽高比以及如何使窗口小部件居中呢?
我正在开发一个基于用户选择N生成NxN网格的Web应用程序.我希望网格的总宽度是相对的(即可用空间的100%),以便用户可以在各种纸张尺寸上打印.
我可以很容易地计算网格中方块的宽度%(即:100%/ N),但是我在计算高度时遇到了问题.网页的高度总是无限的,除非我人为地限制它,就像我说的那样,我不想做.
当网格的高度和宽度约束是动态的而不是正方形时,如何使网格中的正方形为正方形与矩形?
我有一个像这样设置的VideoView:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/player"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<VideoView
android:id="@+id/video"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:layout_centerVertical="true" />
<ProgressBar
android:id="@+id/loader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
但VideoView匹配父容器的宽度,然后根据加载的影片的宽高比设置高度.
我想做的恰恰相反,我希望VideoView与父级的高度相匹配,同时保持宽高比不变,视频将被剪裁在两侧.
我设法拉伸VideoView来填充父级,但是不保持宽高比.
另一件事是,我将MediaController添加到VideoView,如下所示:
MediaController controllers = new MediaController(this) {
@Override
public void hide() {
if (state != State.Hidden) {
this.show();
}
else {
super.hide();
}
}
};
controllers.setAnchorView(videoView);
videoView.setMediaController(controllers);
videoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
controllers.show();
}
});
Run Code Online (Sandbox Code Playgroud)
这很好用,并且控制器始终保持打开状态,但在计算放置视频的位置时(因为它垂直居中),控制器的高度不会被考虑在内.
我的两个问题是:
谢谢.
如何确保桌子的每个单元格在不使用固定尺寸的情况下变成方形?并在改变宽度时保持响应.
table {
width: 90%;
}
td {
width: 30%;
}
tr {
/** what should go here? **/
}Run Code Online (Sandbox Code Playgroud)
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
<table>Run Code Online (Sandbox Code Playgroud)
我需要将元素的宽度保持为其高度的百分比.因此,随着高度的变化,宽度会更新.
相反的情况可以通过使用填充顶部的%值来实现,但填充左边的百分比将是对象宽度的百分比,而不是其高度.
所以使用这样的标记:
<div class="box">
<div class="inner"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我想用这样的东西:
.box {
position: absolute;
margin-top: 50%;
bottom: 0;
}
.inner {
padding-left: 200%;
}
Run Code Online (Sandbox Code Playgroud)
确保根据箱子的高度保持箱子的纵横比.高度是流动的,因为它的边距百分比 - 随着窗户高度的变化,盒子的高度也会变高.
我知道如何用JavaScript实现这一点,只是想知道是否有一个干净的CSS解决方案?
可能重复:
在android中将像素转换为dp
我正在尝试将像素转换为dp.公式是什么?
让我们将640和480转换成dp.文档说这个
dp单位到屏幕像素的转换很简单:px = dp*(dpi/160)
但我认为这不是我需要的(我不知道如何使用它).我想我只需要论坛.我准备好了代码:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
switch(metrics.densityDpi)
{
case DisplayMetrics.DENSITY_LOW:
int sixForty = ?
int fourEighty = ?
break;
case DisplayMetrics.DENSITY_MEDIUM:
int sixForty = ?
int fourEighty = ?
break;
case DisplayMetrics.DENSITY_HIGH:
int sixForty = ?
int fourEighty = ?
break;
}
Run Code Online (Sandbox Code Playgroud) 我使用以下样式显示用MonoDroid编写的Android应用程序的启动画面.然而,它似乎采取图像并最大化它以适应整个屏幕,同时搞乱了纵横比.因此,图像看起来巨大而可怕.
有没有办法让它最大化,但保持纵横比,所以它看起来仍然很好?
<style name="Theme.Splash" parent="android:Theme">
<item name="android:windowBackground">@drawable/splashscreenimage</item>
<item name="android:windowNoTitle">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)
这是C#中的活动,它创建启动画面并转到登录.
[Activity(MainLauncher = true, Theme = "@style/Theme.Splash", NoHistory = true)]
public class SplashScreenActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Start our real activity
StartActivity(typeof(LoginActivity));
}
}
Run Code Online (Sandbox Code Playgroud) 使用imagemagick,我想以最小的方式裁剪图像,以便它适合给定的宽高比.
示例:给出3038 x 2014 px的图像,我想将其裁剪为3:2的宽高比.然后生成的图像将是3021 x 2014 px,从原始图像的中心裁剪出来.
所以寻找一个类似的命令convert in.jpg -gravity center -crop_to_aspect_ratio 3:2 out.jpg.
我正在使用UIImagePickerController为我的应用程序选择图像.然而,我在维持所选图像的纵横比方面面临一些挑战
例如,
我手机上的原始图像如下(非方形图像):

通过"移动和缩放"页面在iphone上选择图像以裁剪图像后,结果如下:(此处仍保持宽高比)

我的应用程序将在带有方框(200 x 200)的UIImageView中显示所选图像.将所选图像设置为UIImageView(UIImageView.image = selectedImage)后,图像的宽高比不会保持,而是跟随UIImageView的框架:(图像看起来在我的UIImageView中现在倾斜):

在这种情况下,有没有办法保持图像的纵横比?
编辑:更新预期结果
经过一番思考,我意识到解决我的问题的最好方法是确保对于这样的图像(非正方形),我需要将它们"转换"成方形图像,即填充图像顶部和底部的空白区域以制作广场例如
预期图片:(添加了顶部和底部边框)

编辑:使用示例代码更新
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo
{
self.imageView.contentMode = UIViewContentModeScaleAspectFill;
self.imageView.image = image;
[[picker parentViewController] dismissModalViewControllerAnimated:YES];
//Compress image
UIImage *image = [self scaleImage:img toSize:CGSizeMake(612.0,612.0)];
self.imageData = UIImageJPEGRepresentation(image, 0.75);
}
Run Code Online (Sandbox Code Playgroud)
通过添加代码"self.imageView.contentMode = UIViewContentModeScaleAspectFill;",我能够在uiimageview中获取方形图像

但似乎原始图像仍然不是方形图像,因此当我执行"UIImage*image = [self scaleImage:img toSize:CGSizeMake(612.0,612.0)];"时,仍会出现偏斜问题.我的假设是否正确?无论如何要缓解这个问题,因为我仍然需要在应用程序的其他地方显示"压缩"图像.
aspect-ratio ×10
android ×4
css ×3
css3 ×2
dimensions ×2
crop ×1
css-shapes ×1
grid-layout ×1
html ×1
imagebutton ×1
imagemagick ×1
ios ×1
objective-c ×1
qt ×1
widget ×1