我一直在开发一个简单的音板应用程序。基本设计是标题的图像视图,然后是 4 行按钮(每行 3 个),这使它看起来类似于旧手机的按钮。在底部,有一个“随机”和“停止”按钮。它们占用的高度空间比上面提到的行略少,但随机按钮是宽度的两倍以填充空间。
为了实现这种外观,我一直在使用嵌套权重和线性布局。但是,经过进一步研究,我发现这对性能不利,因为在我当前的格式中,每个项目都被测量了 8 次。我的 XML 布局代码如下。我已经排除了很多 UI 修饰符,例如按钮上的边距、文本和阴影,以使代码更小。代码可能看起来很长,但重复且易于理解。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="23" >
<!-- Insert Title/Picture in Linear Layout below -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="9"
android:background="@drawable/etho_logo"
android:orientation="horizontal" >
</LinearLayout>
<!-- Insert Sounds/Buttons in Linear Layout below -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="5"
android:orientation="vertical"
android:weightSum="4" >
<!-- This is the 1st line of buttons -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
android:weightSum="3" >
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
</LinearLayout>
<!-- This is the 2nd line of buttons -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
android:weightSum="3" >
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
</LinearLayout>
<!-- This is the 3rd line of buttons -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
android:weightSum="3" >
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
</LinearLayout>
<!-- This is the 4th line of buttons -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
android:weightSum="3" >
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
</LinearLayout>
</LinearLayout>
<!-- Random Button and Stop button below here -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="9"
android:orientation="horizontal"
android:weightSum="3" >
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
<Button
android:id="@+id/bIntro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/hello_real_select" />
</LinearLayout>
</LinearLayout>
我是 Android 新手,所以即使我尝试过使用相对布局,我也很难使用它。我尝试在线观看教程,但在我的代码中使用它时它仍然看起来不正确。
例如,我的标题图像在我要显示的实际文本上方和下方有额外的空间。在带有权重的线性布局中,它会自动变小以适应我给它的空间。虽然不在RelativeLayout 中。
我想我想在这里问的是:如何使我的 RelativeLayout 项目成为跨几行均匀间隔的按钮(如上例所示),以及如何使 ImageViews 和其他东西实际上自动缩小到我给他们的空间?如果需要更多信息,请随时询问。