java - 将 View 高度设置为屏幕尺寸的百分比(以编程方式)

标签 java android xml android-layout layout

我正在使用 AndroidSlidingUpPanel 库。 https://github.com/umano/AndroidSlidingUpPanel

我的activity_main.xml 有两个子项。第一个子元素是主要布局。第二个子元素是向上滑动面板的布局。 这里我发布了滑动面板的布局。 定义了 4 个 LinearLayout,比例百分比为 15 : 15 : 60 : 10 %。 第一个布局将在面板中可见。现在我希望面板高度为第一个布局的 3/4。因此,在这里,第一个布局占据屏幕的 15%,但面板高度应约为屏幕的 10-12%。

有什么方法或公式可以用来获取屏幕尺寸并根据此处提供的 xml 文件的第一个布局设置面板高度。

我尝试在 Java 代码中定义面板高度。但到目前为止还没有成功。 有时第二个布局也会显示在面板中,有时仅显示第一个布局的一半或 1/4。

PS:有没有办法在 setContentView() 之前找到 View 的高度?

<pre><code><LinearLayout android:layout_width="match_parent" android:layout_height="5dp" android:layout_weight="1.5" android:background="#666666" > </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="5dp" android:layout_weight="1.5" android:background="#888888" > </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="6" android:background="#eeeeee" > </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="#202033" > </LinearLayout> </code></pre> <p></p>

最佳答案

可以获取屏幕的高度(以像素为单位)。还可以获得屏幕的密度(DPI)。 两者的比率将为您提供屏幕的物理高度。

 DisplayMetrics displayMetrics = this.getResources().getDisplayMetrics();

      float dpHeight = displayMetrics.heightPixels / displayMetrics.density;
      float dpWidth = displayMetrics.widthPixels / displayMetrics.density;

获得 dpWidth(这是一个与密度无关的物理量)后,您可以轻松地对其应用百分比。

关于java - 将 View 高度设置为屏幕尺寸的百分比(以编程方式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24019319/

相关文章:

java - 单元测试 - 检查方法调用是否具有不覆盖 equals 的对象

android - ListView - ViewHolder 设计的错误回收行为

python - django 反序列化尝试将输入编码为 ascii?

xml - cvc-enumeration-valid : Value '2' is not facet-valid with respect to enumeration '[1]' . 它必须是枚举中的一个值

android - 检测 URL 是否以及何时*成功*加载

.net - 如何将数据集/数据表从 Tomcat 中继到 .NET 应用程序?

java - 字符编码不一致

java - 尝试使用 Double 与 double 计算用户输入

Linux 上的 Java 应用程序

java - 不幸的是(我的应用程序)已停止工作