2016-04-26 61 views
1

我有一個問題,用D-pad測試我的應用程序的焦點問題。這裏有我的應用程序的兩張截圖:Fab有時只會關注焦點

enter image description here enter image description here

在左側的畫面,晶圓廠是「外(或下)」列表中最後一個元素後,它會在焦點導航下來,所以在這種情況下一切都可以。問題出現在右側的圖像上。晶圓廠在listView「內部」,爲此(我認爲但是我不確定)它沒有得到關注。有什麼可以做的嗎?

不論工廠在佈局中的位置如何,問題在於我不願意將工作重點放在列表之前(緊接在選項卡之後)不知道該怎麼做,因爲Android決定了我的佈局的焦點順序。 任何幫助將不勝感激。

UPDATE: fragment_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 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:fitsSystemWindows="true" 

    tools:mContext=".FragmentMain"> 
    <!---marginBottom for ads--> 
    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpagerMain" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="?attr/actionBarSize" 
     android:layout_marginBottom="60dp" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tabsMain" 
     android:layout_width="match_parent" 
     android:layout_height="90dp" 
     android:layout_marginTop="50dp" 
     android:background="?attr/colorPrimary" 
     app:layout_anchor="@+id/appbar" 
     app:layout_anchorGravity="bottom" 
     app:tabGravity="fill" 
     app:tabIndicatorHeight="5dp" 
     app:tabMode="fixed" 
     app:tabPaddingTop="60dp" 
     app:tabSelectedTextColor="@android:color/white" 
     app:tabTextAppearance="@style/TabTextAppearance" /> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="330dp" 
     android:fitsSystemWindows="true" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 


      <FrameLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="86dp" 
       android:background="@color/white" 
       android:orientation="vertical"> 


        <com.github.mikephil.charting.charts.LineChart 
         android:id="@+id/chart" 
         android:layout_width="match_parent" 
         android:layout_height="250dp" 
         android:layout_marginLeft="5dp"/> 

        <ProgressBar 
         android:id="@+id/progressBar" 
         android:background="@drawable/progress" 
         android:layout_width="60dp" 
         android:layout_height="60dp" 
         android:layout_gravity="center" 

         android:visibility="visible" 
         tools:visibility="visible"> 

        </ProgressBar> 
       </FrameLayout> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="?attr/colorPrimary" 
       app:layout_collapseMode="pin" 
       app:popupTheme="@style/AppTheme.PopupOverlay" 


       /> 


     </android.support.design.widget.CollapsingToolbarLayout> 


    </android.support.design.widget.AppBarLayout> 

    <!-- http://antonioleiva.com/floating-action-button/--> 
    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fabMain" 
     android:focusable="true" 
     android:background="@drawable/selector_focusable_fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end|right" 
     android:layout_marginBottom="60dp" 
     android:layout_marginRight="16dp" 
     android:layout_marginEnd="16dp" 
     android:src="@drawable/plus_48" 
     app:pressedTranslationZ="12dp" 
     app:rippleColor="@color/colorAccent"/> 

    <include layout="@layout/ad_bottom_bar" 
     android:id="@+id/advBottomBar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 

     /> 
</android.support.design.widget.CoordinatorLayout> 

security_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<!-- for statedrawable list to work we need to set background in cardview and 
immediate linearlayout. Also set android.clickable in cardview AND 
android:duplicateParentState in linearlayout--> 
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:focusable="true" 
    android:background="@drawable/selector_security" 
    android:clickable="true" 
    android:nextFocusRight="@+id/overflow" 
    app:contentPadding="@dimen/si_card_view_content_padding" 
    android:id="@+id/cardView" 
    card_view:cardCornerRadius="0dp" 
    card_view:cardElevation="@dimen/si_card_view_elevation" 
    card_view:cardUseCompatPadding="true" 
    > 

    <LinearLayout 
     android:id="@+id/linearParent" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:nextFocusRight="@+id/overflow" 
     android:duplicateParentState="true" 
     android:background="@drawable/selector_security"> 

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

      <TextView 
       android:id="@id/ticker" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="3" 

       tools:text="GOOG" /> 

      <TextView 
       android:id="@+id/market" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="3" 
       android:gravity="start" 
       tools:text="EQUITY" /> 
      <ImageView 
       android:id="@+id/overflow" 
       android:focusable="true" 
       android:nextFocusLeft="@+id/cardView" 
       android:nextFocusDown="@+id/cardView" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:background="@drawable/selector_overflow_mini" 
       android:tint="@color/gray700" 
       android:src="@drawable/ic_overflow"/> 
     </LinearLayout> 

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

      <com.carlos.capstone.customcomponents.AutoResizeTextView 
       android:id="@+id/securityName" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="5" 
       android:textStyle="bold" 
       tools:text="Alphabet Inc." /> 

      <TextView 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="2" 
       android:gravity="end" 
       android:textSize="@dimen/si_label_day" 
       android:text="Day(max/min)" 
       tools:text="Day(max/min)" /> 
     </LinearLayout> 

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

      <TextView 
       android:id="@+id/price" 
       android:layout_marginTop="3dp" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="3" 
       android:textSize="@dimen/si_price_text_size" 
       tools:text="710,89" /> 

      <LinearLayout 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1.9" 
       android:orientation="vertical"> 



       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="0dp" 
        android:layout_weight="1" 
        android:orientation="horizontal"> 

        <LinearLayout 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:orientation="horizontal"> 

        <com.carlos.capstone.customcomponents.AutoResizeTextView 
         android:id="@+id/percentChange" 
         android:layout_width="0dp" 
         android:layout_height="wrap_content" 
         android:layout_weight="1" 
         android:layout_marginTop="@dimen/si_percent_margin_top" 
         android:textSize="@dimen/si_percent_text_size" 
         android:gravity="end" 
         tools:text="-110.21%" /> 
        </LinearLayout> 

       </LinearLayout> 


      </LinearLayout> 

      <LinearLayout 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="2" 
       android:orientation="vertical"> 

       <com.carlos.capstone.customcomponents.AutoResizeTextView 
        android:id="@+id/dayMax" 
        android:layout_width="match_parent" 
        android:layout_height="0dp" 
        android:layout_weight="1" 
        android:textColor="@color/gray400" 
        android:gravity="end" 
        tools:text="716,49" /> 

       <com.carlos.capstone.customcomponents.AutoResizeTextView 
        android:id="@+id/dayMin" 
        android:paddingTop="@dimen/si_min_padding_top" 
        android:layout_width="match_parent" 
        android:layout_height="0dp" 
        android:layout_weight="1" 
        android:gravity="end" 
        android:textColor="@color/gray400" 
        tools:text="706,02" /> 


      </LinearLayout> 

     </LinearLayout> 
    </LinearLayout> 
</android.support.v7.widget.CardView> 
+0

可能你的XML注入是錯發表您的XML聽到。 –

+0

發佈您的xml代碼。 –

+1

我在首選項列表中遇到了同樣的問題,這是因爲下面的列表項獲取焦點而不是FAB。這就是爲什麼它在第一個屏幕截圖上工作。 –

回答

0

您可以創建一個單獨的Layout,並把你的工廠那裏。這將迫使這部分始終被看到。

例如

<LinearLayout> 
    //list stuff here 
    <LinearLayout> 
    //fab stuff 
    </LinearLayout> 
</LinearLayout> 
+0

這兩個佈局是不同的片段 –

+0

此外,用戶需要瀏覽直到列表的末尾才能看到晶圓廠,如果列表是一個或兩個元素沒有問題,但在較大的列表上晶圓廠放置在最後,這不是一個好的晶圓廠行爲,應該總是很容易看到。無論如何感謝您的回答 –

相關問題