在RelativeLayout中的百分比宽度

9 浏览
0 Comments

在RelativeLayout中的百分比宽度

我正在为Android应用程序中的登录活动(Login Activity)设计一个表单布局。下面的图片是我想要的效果:

enter image description here

我通过以下XML代码实现了这个布局。问题是,这个代码有点儿问题。我不得不为"host"输入框硬编码一个宽度。具体来说,我不得不指定:

android:layout_width="172dp" 

我真的很想给"host"和"port"输入框设置百分比宽度(例如,"host"宽度为80%,"port"宽度为20%)。这可行吗?下面的XML代码在我的Android设备上可以工作,但似乎在所有屏幕上都不起作用。我真的希望有一个更健壮的解决方案。


    
    
    
    
    
    
    
    
    
    

0
0 Comments

百分比宽度在RelativeLayout中的问题出现的原因是由于API level 26.0.0中废弃了PercentRelativeLayout,并推荐使用ConstraintLayout和相关布局来替代。Google引入了一个名为android.support.percent的新API,可以通过设置百分比来指定视图的大小。在使用该API时,需要添加编译依赖项,并在布局文件中使用PercentRelativeLayout来实现百分比布局。然而,需要注意的是,如果要在ListView的项中使用该布局,将无法工作。此外,需要注意的是,这个包已经不再维护,而是由AndroidX取代。因此,建议在新项目中使用AndroidX库。

Percentage width in a RelativeLayout问题的解决方法是使用ConstraintLayout和相关布局来代替PercentRelativeLayout,并使用android.support.percent包来设置百分比布局。但需要注意的是,这个包已经不再维护,建议使用AndroidX库。

0
0 Comments

在RelativeLayout中使用百分比宽度的问题是出于想要实现不同比例的宽度分割,但是RelativeLayout并没有直接支持这种功能。然而,在特定情况下,比如50/50的宽度分割,可以通过在中心位置放置一个不可见的支撑物来实现。

解决方法是在RelativeLayout中添加一个不可见的支撑物,并使用它来定位需要分割的两个组件。具体的代码如下:


    
    

这种方法虽然有点小技巧,但非常高效,因为空的、大小为零的支撑物几乎不会占用任何资源。

虽然RelativeLayout是Android布局中常用的一种,但是不要对它期望太高,因为它的功能相对有限。

某些情况下了在HTML中可以很容易地实现这一功能,Android开发者完全可以借鉴HTML的经验来设计布局系统。也有人赞同这一观点,认为HTML/CSS比Android布局系统更好用和简单。

如果想要实现70/30的宽度分割,可能需要使用LinearLayout,并设置宽度为"0dip"和适当的权重。

这种在RelativeLayout中使用百分比宽度的方法虽然有点小技巧,但是是一种有效的解决方案。虽然有人认为这是一种"hack",但是相比其他复杂的解决方案,这种方法更加简便和高效。

0
0 Comments

在RelativeLayout中使用百分比宽度的问题是,RelativeLayout不支持直接使用百分比来定义布局。然而,可以通过创建一个嵌套的LinearLayout来实现百分比宽度的效果。

要在LinearLayout中使用百分比宽度,可以使用android:layout_weight属性。在下面的示例中,左边的按钮占据70%的空间,右边的按钮占据30%的空间。


    

注意,必须将layout_width设置为0dp,否则视图可能无法正确缩放。

如果想要在RelativeLayout中使用百分比宽度,可以在RelativeLayout内部创建一个嵌套的LinearLayout,并在其中使用百分比宽度。

如果想要实现按钮只占据一行并且宽度为50%的效果,可以使用一个不可见的虚拟按钮或者一个View。例如,在上面的示例中,将android:visibility="invisible"添加到第二个按钮即可。

如果想要同时使用百分比宽度和百分比高度,可以在布局文件中设置相应的百分比值。

需要注意的是,这种解决方法不适用于android:layout_width="wrap_content"的情况。

另外,从support库版本23.0.0开始,可以使用PercentRelativeLayout来实现在RelativeLayout中使用百分比宽度的效果。

通过使用LinearLayout或者PercentRelativeLayout,可以在RelativeLayout中实现百分比宽度的布局。

0