所以我有四个按钮,它们都使用match_parent来表示高度和宽度。我使用“drawableTop”属性在按钮本身内有图像,我想制作它,所以我不需要为每个分辨率单独的图像。这是我拍的肖像截图。一个景观将会出现。
所以这看起来很好,除了我只有4种不同的图像分辨率并在手机上试用它们并没有产生积极的结果。有没有什么方法可以让我有一个更大的图像,比如只是“可绘制”并让它缩小以适应所有分辨率?如果没有,我该怎么办?我目前涵盖hdpi,ldpi,mdpi和xhdpi,但我想涵盖所有界限。还有什么其他密度?
如果我可以实现自动调整大小,我也不必禁止用户使用Landscape:
另外,这是xml:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:baselineAligned="false"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
tools:ignore="NestedWeights" >
<Button
android:id="@+id/bMap"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawableTop="@drawable/ic_camera"
android:text="Button" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
<Button
android:id="@+id/bCamera"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawableTop="@drawable/ic_camera"
android:text="Button" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:baselineAligned="false"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
tools:ignore="NestedWeights" >
<Button
android:id="@+id/bGallery"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawableTop="@drawable/ic_camera"
android:text="Button" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
<Button
android:id="@+id/bPlants"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawableTop="@drawable/ic_camera"
android:text="Button" />
</LinearLayout>
</LinearLayout>
答案 0 :(得分:5)
AFAIK,使用具有可绘制背景的Button
并不容易,因为drawable不会随视图缩放。
我相信如果您将Button
更改为ImageButton
s,可以执行此操作,这会为缩放图像提供更多选项。
ImageButton类公开android:scaleType
属性,您可以使用centerInside
来缩小图像以适应ImageButton的边界。
同样使用ImageButton
,您应该使用android:src
而不是android:drawable
来定义图片。
我不确定是否有办法在ImageButton上设置文本。您可能需要一个更高级的布局,包括LinearLayout中的ImageView和TextView,然后将该LinearLayout视为按钮(添加onClick等)。
答案 1 :(得分:0)
是的,你可以拥有一个更大的图像并让它缩小以适应所有分辨率。您可以通过编程方式实现此自动调整。从this answer查看using System;
using System.Diagnostics;
using System.IO;
namespace XSD2CS
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter xsd file: ");
string xsdFile = Console.ReadLine();
if (!File.Exists(xsdFile)) {
Console.WriteLine("Error. File doesn't exists.");
Environment.Exit(1);
}
Process p = new Process();
p.StartInfo.FileName = "XSD.exe";
p.StartInfo.WorkingDirectory = @"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin";
p.StartInfo.Arguments = "/c " + xsdFile;
p.Start();
}
}
}
。