Xamarin控件彼此堆叠

时间:2018-09-16 21:19:18

标签: android xamarin xamarin.android

我是Xamarin的新手,我在这里看到类似的教程: https://docs.microsoft.com/en-us/xamarin/android/get-started/hello-android/hello-android-quickstart?tabs=vswin

并且axml设计器应该将控件“捕捉”到您列出的其他控件的边框,但是我的这种方式无法正常工作。只是将它们全部堆叠在一起。任何线索如何解决这个问题?我搜索了一段时间,但似乎没有其他人遇到这个问题。

例如,它们都只是被放置在窗格的左上角,即使“正确”放置在另一个控件的底部,它们也仍会紧贴在左上角。

编辑:共享XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px"
tools:gridSpec="1|8|#0093eeff|K:#ee8700ff:16,l:72,l:16,r|S:#83ee00ff:16,0,l:16,56,l:16,0,r">
<TextView
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minWidth="25px"
    android:minHeight="25px"
    android:id="@+id/textView1"
    android:layout_toLeftOf="@id/textView1"
    android:layout_toRightOf="@id/editText1" />
<TextView
    android:text="Text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/PhoneNumberText"
    android:id="@+id/textView2" />
<Button
    android:text="Translate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/PhoneNumberText"
    android:id="@+id/TranslateButton"
    android:layout_above="@id/PhoneNumberText" />
<EditText
    android:layout_height="wrap_content"
    android:layout_below="@id/PhoneNumberText"
    android:id="@+id/PhoneNumberText"
    android:layout_toLeftOf="@id/textView1"
    android:layout_marginTop="0.0dp"
    android:layout_marginBottom="0.0dp"
    android:text="1-855-xamarin"
    android:layout_width="wrap_content" />
</RelativeLayout>

2 个答案:

答案 0 :(得分:2)

  

Xamarin控件彼此堆叠

您的.axml有几个错误。

在您的textView2中:

<TextView
    ...
    android:id="@+id/textView1"
    android:layout_toLeftOf="@id/textView1"
    android:layout_toRightOf="@id/editText1" />
//I didn't find where you define the id -- editText1

请注意:循环依赖项不能存在于RelativeLayout

  

您要实现什么布局?

类似于您在上述链接中发布的图片吗?

enter image description here

如果是这样,您可以将布局文件修改为:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:text="Enter a Phoneword:"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView1" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/PhoneNumberText"
        android:text="1-855-XAMARIN" />
    <Button
        android:text="Translate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/TranslateButton" />
    <TextView
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/TranslatedPhoneWord" />
</LinearLayout>

答案 1 :(得分:0)

我遇到了同样的问题,并决定阅读本教程中的说明:

  

Visual Studio的较新版本包含略有不同的应用程序   模板。

Instead of activity_main.axml, the layout is in content_main.axml.
The default layout will be a RelativeLayout. For the rest of the steps on this page to work you should change the <RelativeLayout> tag
     

到并添加另一个属性   android:orientation =“ vertical”到LinearLayout开头标记。

进行这些更改解决了我的问题