2012-02-11 23 views
5

कैसे सेट करें मैं Google टीवी के लिए एक एप्लिकेशन विकसित कर रहा हूं जहां सभी नेविगेशन डी-पैड/कीबोर्ड का उपयोग करके किया जाएगा।एंड्रॉइड एक्शनबार का अगला फोकस करने योग्य नियंत्रण प्रोग्रामेटिक रूप से

मेरी गतिविधि में एक्शनबार और क्षैतिज रूप से कुछ सूचियां हैं। सूची ए, बी & सी कहें। सूची बी & सी सूची के चयनित आइटम के आधार पर लोड डेटा .. ताकि वे डेटा लोड कर सकें/नहीं।

मुद्दे कि जब ActionBar ध्यान केंद्रित है और मैं D- पैड कुंजी नीचे दबाएं, ध्यान खो दिया है और सूची में सी (या बीअगर सी कोई डाटा नहीं है) .. y स्थानांतरित नहीं कर रहा है?

इस लक्ष्य को हासिल करने के लिए, मैं

getActionBar().getCustomView().setNextFocusDownId(R.Id.list_C_id); 

लेकिन काम नहीं किया निम्नलिखित की तरह प्रोग्राम के ActionBar के अगले फ़ोकस करने योग्य दृश्य सेट करने की कोशिश की।

मैंने पदानुक्रम दर्शक का उपयोग करके लेआउट पदानुक्रम की जांच करने का भी प्रयास किया ... लेकिन, स्पष्ट रूप से, मुझे समझ में नहीं आया कि इसके निष्कर्षों के साथ क्या करना है।

मैं एंड्रॉइड एक्शनबार के अगले फोकस करने योग्य नियंत्रण प्रोग्रामेटिक रूप से कैसे सेट कर सकता हूं ??

किसी भी मदद की बहुत सराहना की जाती है।

गतिविधि के XML इस प्रकार है:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mainContainer" style="@style/main" > 

<!-- Splash Screen --> 
<LinearLayout 
    android:id="@+id/splash_screen" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/welcome" 
    android:orientation="vertical" > 
</LinearLayout> 

<!-- main content holder.. it is shown afetr some time of showing above splash screen --> 
<LinearLayout 
    android:id="@+id/main_content_screen" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:focusable="true" 
    android:visibility="invisible"> 

    <!-- All Packages List --> 

    <LinearLayout 
     android:layout_width="205dp" 
     android:layout_height="match_parent" 
     android:background="@drawable/content_round_bg" 
     android:focusable="true" 
     android:orientation="vertical" > 

     <!-- Header of Packages--> 
     <RelativeLayout 
      style="@style/marginLeft5" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"     
      android:background="@drawable/content_round_bg" > 

      <ImageView 
       android:id="@+id/packagesIcon" 
       style="@style/titleIcon" 
       android:src="@drawable/packages" > 
      </ImageView> 

      <TextView 
       style="@style/title" 
       android:layout_toRightOf="@+id/packagesIcon" 
       android:text="Packages" > 
      </TextView> 

      <ProgressBar 
       android:id="@+id/progressBarPackages" 
       style="@style/progressBar" /> 
     </RelativeLayout> 

     <!-- <View style="@style/horizontalSeperator" /> --> 

     <ListView 
      android:id="@+id/allPackagesList" 
      style="@style/list" 
      android:nextFocusRight="@+id/gridChannels"> 
     </ListView> 

     <!-- Message which is hidden by default and is made visible if list has no data --> 
     <LinearLayout 
      android:id="@+id/packageNotFound" 
      style="@style/emptyListIdentifier" > 

      <ImageView 
       style="@style/titleIcon" 
       android:src="@drawable/info" > 
      </ImageView> 

      <TextView 
       style="@style/emptyListIdentifierText" 
       android:layout_marginLeft="5dp" 
       android:text="Packages not available" > 
      </TextView> 
     </LinearLayout> 
    </LinearLayout> 

    <View style="@style/verticalSeperator" /> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:focusable="true" 
     android:orientation="vertical" > 

     <LinearLayout 
      android:id="@+id/relativeLayout1" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:focusable="true" 
      android:layout_below="@+id/titleContainer" > 

      <LinearLayout 
       android:id="@+id/channelsContainer" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_weight="0.35" 
       android:background="@drawable/content_round_bg" 
       android:focusable="true" 
       android:orientation="vertical" > 

       <!-- Header of Channels--> 
       <RelativeLayout 
        style="@style/marginLeft5" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:background="@drawable/content_round_bg" > 

        <ImageView 
         android:id="@+id/channelsIcon" 
         style="@style/titleIcon" 
         android:src="@drawable/channels" > 
        </ImageView> 

        <TextView 
         style="@style/title" 
         android:layout_toRightOf="@+id/channelsIcon" 
         android:text="Channels" > 
        </TextView> 

        <ProgressBar 
         android:id="@+id/progressBarChannels" 
         style="@style/progressBar" /> 
       </RelativeLayout> 

       <RelativeLayout style="@style/listsContiner" android:focusable="true" > 

        <GridView 
         android:id="@+id/gridChannels" 
         style="@style/grid" 
         android:divider="#10F1F1F1" 
         android:nextFocusLeft="@+id/allPackagesList" 
         android:nextFocusRight="@+id/gridAllVODs" 
         android:numColumns="2" /> 
       </RelativeLayout> 

       <!-- Message which is hidden by default and is made visible if list has no data --> 
       <RelativeLayout 
        android:id="@+id/channelsNotFound" 
        style="@style/emptyListIdentifier" > 

        <ImageView 
         android:id="@+id/NoChannelsIcon" 
         style="@style/titleIcon" 
         android:src="@drawable/info" > 
        </ImageView> 

        <TextView 
         style="@style/emptyListIdentifierText" 
         android:layout_toRightOf="@+id/NoChannelsIcon" 
         android:text="Channels are currently not available" > 
        </TextView> 
       </RelativeLayout> 
      </LinearLayout> 

      <View style="@style/verticalSeperator" /> 

      <LinearLayout 
       android:id="@+id/vodsContainer" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_weight="0.65"      
       android:background="@drawable/content_round_bg" 
       android:orientation="vertical" > 

       <!-- Header of VODs--> 
       <RelativeLayout 
        style="@style/marginLeft5" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:background="@drawable/content_round_bg" > 

        <ImageView 
         android:id="@+id/VODsIcon" 
         style="@style/titleIcon" 
         android:src="@drawable/vod" > 
        </ImageView> 

        <TextView 
         style="@style/title" 
         android:layout_toRightOf="@+id/VODsIcon" 
         android:text="VOD" > 
        </TextView> 

        <ProgressBar 
         android:id="@+id/progressBarVODs" 
         style="@style/progressBar" /> 
       </RelativeLayout>      

       <RelativeLayout style="@style/listsContiner" > 
        <GridView 
         android:id="@+id/gridAllVODs" 
         style="@style/grid" 
         android:divider="#10F1F1F1" 
         android:nextFocusLeft="@+id/gridChannels" 
         android:nextFocusRight="@+id/allPackagesList" 
         android:numColumns="1" /> 
       </RelativeLayout> 

       <!-- Message which is hidden by default and is made visible if list has no data --> 

       <RelativeLayout 
        android:id="@+id/videosNotFound" 
        style="@style/emptyListIdentifier" > 

        <ImageView 
         android:id="@+id/NoVODsIcon" 
         style="@style/titleIcon" 
         android:src="@drawable/info" > 
        </ImageView> 

        <TextView 
         style="@style/emptyListIdentifierText" 
         android:layout_centerInParent="true" 
         android:layout_toRightOf="@+id/NoVODsIcon" 
         android:text="Videos are currently not available" > 
        </TextView> 
       </RelativeLayout> 
      </LinearLayout> 
     </LinearLayout> 
    </RelativeLayout> 
</LinearLayout> 

सभी प्रत्येक सूची के कंटेनर/ग्रिड शीर्ष तक सबसे LinearLayout स्थापित किया है एंड्रॉयड: फ़ोकस करने योग्य = "true" प्रत्यक्ष या अपनी शैली में।

संपादित करें: नमूना बिल्कुल मेरी एसपीपी की स्क्रीन का वर्णन एप्लिकेशन here

से डाउनलोड किया जा सकता शामिल करें पहली सूची में । आप इसे main.xml फ़ाइल में अपनी आईडी ऑलपैकेजेज द्वारा खोज सकते हैं। मैं इसे सम्मिलित करना भूल गया। खेद इस ऐप्लिकेशन में

मुद्दे हैं:

  1. फोकस ActionBar मद से सूची में/ग्रिड नहीं आती है।
  2. ActionBar आइटम के बीच नेविगेशन लेता है एक से अधिक D- पैड "छोड़" या "सही" ले जाने के लिए

उत्तर

0

सूची एक और कंटेनर के अंदर लिपटे है प्रेस? एंड्रॉइड जोड़ने का प्रयास करें: आपकी सूचियों और उनके कंटेनरों के लिए फोकस करने योग्य = "सत्य" ..

+0

यह काम नहीं किया ... मैंने अपना प्रश्न अपडेट किया है और गतिविधि के एक्सएमएल को रखा है .. मैं बटन के साथ कुछ कस्टम हेडर का उपयोग कर सकता हूं (कार्य करने के लिए एक्शन बटन के रूप में) और लोगो के लिए छवि .. लेकिन मैं नहीं चाहता ... क्योंकि मैं इनबिल्ट एक्शनबार का उपयोग करना चाहता हूं। कृपया इसे हल करने में मेरी सहायता करें क्योंकि यह बहुत जरूरी है – Aamir

+0

मुझे XML में ListView या ActionBar नहीं दिखाई देता है। –

+0

लिस्ट व्यू और दो ग्रिड व्यू एक्सएमएल में हैं ... और मैंने एक्सएमएल में एक्शनबार नहीं जोड़ा है ... मैंने सिर्फ थीम को थीम सेट किया है और ऑनरेट्सप्शन मैनेयू में एक मेनू बढ़ाया है और एक्शनबार दिखाई दिया ... मैंने एंड्रॉइड एक्शनबार ट्यूटोरियल का पालन किया http://developer.android.com/guide/topics/ui/actionbar.html से। मैं सोरी हूं अगर मैंने कुछ याद किया है क्योंकि मैं एंड्रॉइड – Aamir