簡體   English   中英

如何在Xamarin.Forms中創建與位置相同的UI塊:已在HTML中修復?

[英]How to create UI block in Xamarin.Forms same as position: fixed in HTML?

這是我嘗試使用Grid和ScrollView的嘗試:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
     x:Class="MobApp.TestPage">
<ContentPage.Content>
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="40" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>

    <Label Text="News Header" Grid.Column="0" Grid.Row="0" />

    <ScrollView Grid.Column="0" Grid.Row="1">
        <StackLayout x:Name="NewsItems">
            <StackLayout>
                <Label Text="News 1 Title" />
                <Label Text="News 1 Text" />
            </StackLayout>
            <StackLayout>
                <Label Text="News 2 Title" />
                <Label Text="News 2 Text" />
            </StackLayout>
            <StackLayout>
                <Label Text="News 3 Title" />
                <Label Text="News 3 Text" />
            </StackLayout>
            <StackLayout>
                <Label Text="News 4 Title" />
                <Label Text="News 4 Text" />
            </StackLayout>
            <StackLayout>
                <Label Text="News 5 Title" />
                <Label Text="News 5 Text" />
            </StackLayout>
            <StackLayout>
                <Label Text="News 6 Title" />
                <Label Text="News 6 Text" />
            </StackLayout>
            <StackLayout>
                <Label Text="News 7 Title" />
                <Label Text="News 7 Text" />
            </StackLayout>
        </StackLayout>
    </ScrollView>
</Grid>

但是,當在Android 4.4(API 19)上滾動時,模擬器ScrollView內容會與標簽“ News Header”重疊。 另外在手冊中強烈建議不要使用嵌套的ScrollView。

我該如何解決這個任務?

這可能只是第一個Grid RowDefinition Height需要稍微增加或設置為auto (如果您不介意循環計算命中)

<Grid.RowDefinitions>
    <RowDefinition Height="40" />
    <RowDefinition Height="*" />
</Grid.RowDefinitions>

是的,不要使用嵌套的scrollview這沒有任何意義,並且可能會出現不合理的行為

更新資料

也許嘗試改變VerticalOptions在滾動視圖或<Label Text="News Header"

LayoutOptions

更新2

也嘗試刪除網格上的列和控件上的列說明符,在考慮列之前我遇到了奇怪的布局問題

另外,嘗試用網格替換堆棧布局。

注意:我知道這些建議會碰到很多,但是有時候您只需要調整一些東西,直到它們不幸地起作用即可。

一個令人着迷的現象花了我幾天的時間)這項任務真正通過Grid + ScrollView解決了,從我的示例來看,一切正常。 顯然我的模擬器出了點問題。 一切始於我注意到安裝Xamarin后默認提供的仿真器(Nougat 7.1)如何顯示滾動條。 我理解並開始挖掘。 我創建的所有模擬器(使用從4.4到7.0的任何api)都顯示了帶有上述錯誤的滾動條。 要更改/復制或重新創建默認情況下提供的同一模擬器不起作用,模擬器管理器將詛咒某種錯誤。 我進行了更深入的研究,這花費了很多時間和神經,但結果卻有回報:

  1. 將Android SDK更新到26(最新)版本
  2. 將Xamarin Android Emulator Manager更新到最新版本
  3. 在BIOS中啟用了硬件虛擬化技術
  4. 通過Android的SDK包管理器,安裝了HAXM。 但實際上,它尚未安裝,而只是下載了,之后您需要在計算機上另外找到它(我在C:\\ Program Files(x86)\\ Android \\ android-sdk \\ extras \\ intel \\ Hardware_Accelerated_Execution_Manager中擁有它)並運行intelhaxm-android.exe
  5. 好結局。 之后,我創建的仿真器會正確顯示所有數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM