2017-07-05 16 views
0

まず、私はアンドロイドに新しいので、私は何か基本的なものを逃した場合私は謝罪します。Android Textviewスクロールの問題

いくつかの情報を保存するためにGridViewを作成しました。 GridViewは3x6グリッドで構成されています。各セルには、画像の下に画像とテキストがあります。 GridViewは非常に大きいので、私はスクロールバーを実装しています。

このページが正常にどのように見えるべきかで、最初にロード/選択したときである: enter image description here

すべてが素敵に見える、私が一番下までスクロールして、バックアップしたときに、しかし、テキストが包むように見えますイメージを所定の位置から押し出します。なぜこれがわからないのですか?

これは私が下にスクロールしていると、彼らが戻るまでスクロールした後にページがどのように見えるかです:GridViewのため enter image description here

、私はcontent_rewardsと呼ばれる非常に上部でのTextViewと一緒にGridViewコントロール自体にXMLファイルを持っています.xml。 relics_gridlayout.xmlというグリッド内の各ピクチャ/テキストのXMLファイルも作成しています。私はおそらく、これらのファイルのいずれかのTextViewsのプロパティが不足していると考えていますが、どのプロパティかどちらのプロパティがわからないのですか。グリッドやアダプタ自体とは関係がないとは思わないので、そのコードは含めません。

content_rewards.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
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:id="@+id/main_content" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/white" 
android:fitsSystemWindows="true" 
tools:layout_editor_absoluteX="0dp" 
tools:layout_editor_absoluteY="25dp"> 

<GridView 
    android:id="@+id/customgrid" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_below="@+id/os_texts" 
    android:columnWidth="100dp" 
    android:numColumns="auto_fit" 
    android:stretchMode="spacingWidthUniform" 
    android:verticalSpacing="35dp" 
    android:scrollbars="horizontal" 
    tools:layout_constraintTop_creator="1" 
    android:layout_marginTop="116dp" 
    tools:layout_constraintLeft_creator="1" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintTop_toTopOf="parent"/> 

<TextView 
    android:id="@+id/textView4" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="B = 0 S = 0 G = 0" 
    android:textSize="24sp" 
    tools:layout_constraintRight_creator="1" 
    tools:layout_constraintBottom_creator="1" 
    app:layout_constraintBottom_toTopOf="@+id/customgrid" 
    app:layout_constraintRight_toRightOf="parent" 
    tools:layout_constraintLeft_creator="1" 
    android:layout_marginBottom="8dp" 
    app:layout_constraintLeft_toLeftOf="parent"/> 
</android.support.constraint.ConstraintLayout> 

relics_gridlayout.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:padding="3dp"> 

<ImageView 
    android:id="@+id/os_images" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:src="@mipmap/ic_launcher" /> 

<TextView 
    android:layout_below="@+id/os_images" 
    android:id="@+id/os_texts" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="This is Just Dummy Text" 
    android:textAlignment="center" 
    android:textSize="18dp" 
    android:textStyle="bold"/> 

</RelativeLayout> 

すべてのヘルプは素晴らしいことです。ありがとう。

+1

これはおそらくあなたが望む答えではありませんが、GridViewを使用しないことをお勧めします。私は、RecyclerViewをGridLayoutManagerとともに使用します。これはおそらく、ビューが飛び回っているという問題を回避するでしょう。 RecyclerViewは、Androidのどこでも使用されているため、まだ学習していない場合は、RecyclerViewを学ぶ良い機会です。人々はGridViewやListViewを使わない傾向があります。 –

答えて

0
<?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:background="#ECEFF1" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 

    android:paddingTop="@dimen/activity_vertical_margin" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context=".MainActivity" 
    tools:showIn="@layout/app_bar_main"> 

    <GridView 
     android:id="@+id/grd1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentLeft="true" 
     android:gravity="center" 
     android:horizontalSpacing="6dp" 
     android:numColumns="auto_fit" 
     android:stretchMode="columnWidth" 
     android:verticalSpacing="6dp"> 

    </GridView> 


</RelativeLayout> 

これは問題を解決するはずです。

スクロールビューの動作は、常にそれを見るために相対的なレイアウトのうち、テキストビューを追加かかわらず、サイズ今

のスクロールを処理します。

またはビューをスクロールネストされたとして、親を持ち、偽

setNestedScrollingEnabled(false) 

私はすでにあなたのグリッドビューを使用し、このような問題に

を解決するために正常に使用している私のコードからサンプルとして有効にネストされたスクロールを許可Recycler Viewの代わりに使用します。

あなたはアイテムのテキストビューは常に2つのラインのその項目のレイアウトに=「2」

<android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/swipe_container_reports" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <android.support.v4.widget.NestedScrollView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 

       <android.support.v7.widget.AppCompatTextView 
        android:id="@+id/tab_header" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginLeft="8dp" 
        android:layout_marginRight="8dp" 
        android:layout_marginTop="8dp" 
        android:text="@string/user_reports" 
        android:textAllCaps="true" 
        android:textColor="@color/colorPrimaryDark" 
        android:textSize="@dimen/tab_label" 
        app:textAllCaps="true" /> 


       <RelativeLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"> 

        <android.support.v7.widget.RecyclerView 
         android:id="@+id/reports_recycler" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:fadeScrollbars="false" 
         android:nestedScrollingEnabled="false" 
         android:padding="4dp" /> 
       </RelativeLayout> 
      </LinearLayout> 
     </android.support.v4.widget.NestedScrollView> 
    </android.support.v4.widget.SwipeRefreshLayout> 
+0

ご協力ありがとうございます。私はあなたのソリューションを実装しませんでしたが、それは私にインスピレーションを与えました。私はグーグルにmunlinesを検索し、それは私にラインと呼ばれるプロパティを与えた。私はこれを3に設定し、私の問題を解決しました。 –

+0

私は私のポストラインであなたの問題を解決する、より複雑なビューは、ネストされたスクロールビューを使用する方が良いと言いました。私の答えを承認してください。何人かの代理人を得ようとしています –

+0

ありがとうございました –

0

をmunLinesを設定する。これは、私も直面している問題は、私の唯一の解決策である場合グリッドアイテムの高さをハードコーディングしていた可能性があります。

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="100dp" 
android:padding="3dp"> 

より良いオプションは、グリッドレイアウトマネージャでリサイクラビューを使用することです。あなたのグリッドビュー内のすべての項目が同じスペース

更新コードの下に(あなたが重力やレイアウト重みを調整する必要があります)とのrelics_gridlayout.xmlを占めるよう

0

あなたはこの

を試してみてのLinearLayoutを使用して重みを割り当てることができます
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/linearLayout_root_single_home_option" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 


<ImageView 
    android:id="@+id/os_images" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@mipmap/ic_launcher" 
    android:layout_weight="9" /> 


<TextView 
    android:id="@+id/os_texts" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="This is Just Dummy Text" 
    android:textSize="18dp" 
    android:textStyle="bold" 
    android:layout_weight="1" /> 


</LinearLayout> 
関連する問題