【问题标题】:Xamarin Android RelativeLayout Designer SetupXamarin Android 相对布局设计器设置
【发布时间】:2018-06-08 09:18:51
【问题描述】:

我试图创建一个 ListView 项目布局并在左侧放置一个图标,中间是主要文本,然后是另外两个被分成两部分的文本(主要文本高度的顶部和底部),位于主要文本的右侧 - 但我似乎无法根据屏幕大小和文本使其“适合”。

这是我当前的 AXML 布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minWidth="25px"
android:minHeight="25px">
<ImageView
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:background="@android:color/darker_gray"
    android:id="@+id/photoImageView" />
<TextView
    android:text="App Name And UID"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textAlignment="viewStart"
    android:background="@android:color/holo_blue_light"
    android:gravity="center_vertical"
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    android:layout_toRightOf="@id/photoImageView"
    android:id="@+id/nameTextView" />
<TextView
    android:text="Down: 723B/s"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textAlignment="viewStart"
    android:background="@android:color/holo_blue_dark"
    android:gravity="center_vertical"
    android:layout_width="fill_parent"
    android:layout_height="30dp"
    android:layout_toRightOf="@id/nameTextView"
    android:id="@+id/downloadTextView" />
<TextView
    android:text="Up: 2104MB/ss"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textAlignment="viewStart"
    android:background="@android:color/holo_blue_dark"
    android:gravity="center_vertical"
    android:layout_width="fill_parent"
    android:layout_height="30dp"
    android:layout_toRightOf="@id/nameTextView"
    android:layout_below="@id/downloadTextView"
    android:id="@+id/uploadTextView" />

有没有人有解决方案或我缺少什么?请注意我试图避免布局嵌套

【问题讨论】:

  • 你的VS现在运行良好吗?你测试过GridLayout吗?
  • VS 设计器永远无法正常工作,但是当我构建并运行它时它很好
  • 那么,这两种解决方案都不适合你,对吗?

标签: android android-layout xamarin android-relativelayout designer


【解决方案1】:

如果您的要求允许,您可以使用 LinearLayout 而不是 RelativeLayout 来实现它。您可以使用 layout_weight 属性来指定大小,使其始终根据屏幕大小在屏幕上占据特定比例,在上面的示例中,我使用了 1(App icon) - 3(Main Text) - 2(最后一部分)。这样一共是 6,这意味着无论屏幕大小,图标始终占据屏幕宽度的 1/6,正文将占据 3/6,依此类推。在下面找到实现它的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:minWidth="25dp"
android:minHeight="25dp">
<ImageView
    android:layout_width="0dp"
    android:layout_height="60dp"
    android:layout_weight="1"
    android:background="@android:color/darker_gray"
    android:id="@+id/photoImageView" />
<TextView
    android:text="App Name And UID"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:background="@android:color/holo_blue_light"
    android:gravity="center_vertical"
    android:layout_width="0dp"
    android:layout_weight="3"
    android:layout_height="60dp"
    android:id="@+id/nameTextView" />
<LinearLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="2"
    android:orientation="vertical">
<TextView
    android:text="Down: 723B/s"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:background="@android:color/holo_blue_dark"
    android:gravity="center_vertical"
    android:layout_width="fill_parent"
    android:layout_height="30dp"
    android:id="@+id/downloadTextView" />
<TextView
    android:text="Up: 2104MB/ss"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:background="@android:color/holo_blue_dark"
    android:gravity="center_vertical"
    android:layout_width="fill_parent"
    android:layout_height="30dp"
    android:id="@+id/uploadTextView" />
</LinearLayout>

【讨论】:

  • 好吧,它使用了两个布局,这在性能方面并不好,但我想如果没有其他办法,我会接受!
  • 刚刚做了 - 15 岁以下的代表说它没有显示 - 一种奇怪的方式来制作它
【解决方案2】:

如果您只想使用一种布局,请尝试GridLayout

<GridLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:rowCount="2"
    android:columnCount="6">
    <ImageView
        android:src="@drawable/rr"
        android:layout_rowSpan="2"
        android:background="@android:color/darker_gray"
        android:id="@+id/photoImageView" />
    <TextView
        android:text="App Name And UID"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:background="@android:color/holo_blue_light"
        android:gravity="center_vertical"
        android:layout_columnSpan="3"
        android:layout_rowSpan="2"
        android:layout_gravity="fill_vertical"
        android:id="@+id/nameTextView" />
    <TextView
        android:text="Down: 723B/s"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:background="@android:color/holo_blue_dark"
        android:gravity="center_vertical"
        android:id="@+id/downloadTextView"
        android:layout_gravity="fill"
        android:layout_columnSpan="2" />
    <TextView
        android:text="Up: 2104MB/ss"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:background="@android:color/holo_blue_dark"
        android:gravity="center_vertical"
        android:id="@+id/uploadTextView"
        android:layout_gravity="fill"
        android:layout_columnSpan="2" />
</GridLayout>

【讨论】:

  • 我对 GridLayouts 的运气不太好 - 似乎 xamarin for VS 有点坏了。
  • 复制粘贴即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多