我正在尝试创建一个布局(使用
eclipse),我需要垂直对齐各种控件,如TextView和Button.我试图保持所有小部件完全左对齐.即使我为控件指定相同的左边距/填充,仍然可以在不同类型的控件之间看到1-2个像素的差异.
问题是小部件的边框(eclipse中的蓝色矩形)和小部件的内容/图形之间的距离因小部件而异(比如TextView和Button).
我可以通过为TextView指定左边距或通过减少按钮容器的左边距来应用变通方法.但我正在寻找更清洁的解决方案.我无法找到任何控制小部件边框和内容之间差异的属性.
关于如何控制这个差距的任何指示?
显示问题的快照如下.这是我用于此问题的布局XML: –
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Dummy Button" />
</LinearLayout>
下图显示了虚拟应用程序的快照.请注意“Hello World”TextView和“Dummy Button”的左侧边距之间的差异.
第二张图显示了在Eclipse中选择时的按钮小部件.蓝色矩形表示小部件边界/边框.某些属性可以控制按钮边框(蓝色矩形)和内容(灰色矩形)之间的区别吗?
最佳答案 这是一个艰难的TextView和其他Android小部件可能有自己的一些内在风格(Android版本依赖).
因此,为了解决这个问题,你必须创建自己的风格.
在创建自己的样式时,请始终引用此主题的android源代码:
https://github.com/android/platform_frameworks_base/tree/master/core/res/res/values
https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/themes.xml
https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/styles.xml
有多种方法可以创建自己的风格.
一种方法是在您的清单中主题化您的活动.
首先,在/ values /文件夹中需要一个styles.xml文件.
在这里你会宣布你的新风格:
<style name="Theme.MyTheme.Dark" parent="@android:style/Theme.NoTitleBar">
<item name="android:textViewStyle">@style/Widget.TextView.Black</item>
</style>
<style name="Theme.MyTheme.Light" parent="@android:style/Theme.NoTitleBar">
<item name="android:textViewStyle">@style/Widget.TextView.White</item>
</style>
它上面的样式继承了隐藏标题栏的Android风格,你可以继承其他东西.
在这个主题中,我们覆盖textViewStyle,这允许我们为TextView设置自定义值并覆盖一些内在值.
<style name="Widget.TextView.White" parent="@android:style/Widget.TextView">
<item name="android:textColor">#FFFFFF</item>
</style>
<style name="Widget.TextView.Black" parent="@android:style/Widget.TextView">
<item name="android:textColor">#000000</item>
</style>
最后,您将在AndroidManifest.xml中主题化您的活动:
<activity
android:name=".ui.phone.FirstActivity"
android:theme="@style/Theme.MyTheme.Dark" />
<activity
android:name=".ui.phone.SecondActivity"
android:theme="@style/Theme.MyTheme.Light" />
现在,当你在FirstActivity中使用TextView时,它的文本默认为黑色,而在第二个活动中它将是白色.
针对您的具体问题:
你必须查看我在顶部链接的源代码文件,看看是否有任何填充或minWidth或大小属性影响你的小部件和你的布局.