2013-04-16 7 views
6

Я хочу создать собственный табуст для браузера, например, вкладки. Я смущен тем, как применять его для макета, как на вкладке браузера Chrome, как на изображении.Создание пользовательского табулятора, как в браузере Chrome для Android

enter image description here

Вот что я пытался. Я хочу знать, как создавать эти края с наклоном, как на изображении.

tab_selected.xml

<item> 
    <shape android:shape="rectangle" > 
     <solid android:color="#DCDCDC" /> 

     <corners 
      android:topLeftRadius="5dp" 
      android:topRightRadius="5dp" /> 
    </shape> 
</item> 
<item 
    android:bottom="2dp" 
    android:left="1dp" 
    android:right="1dp" 
    android:top="1dp"> 
    <shape android:shape="rectangle" > 
     <solid android:color="#DCDCDC" /> 
     <corners 
      android:topLeftRadius="10dp" 
      android:topRightRadius="10dp" /> 
    </shape> 
</item> 

tab_unselected.xml

<item android:top="10dp"> 
    <shape android:shape="rectangle" > 
     <solid android:color="#AAAAAA" /> 
    </shape> 
</item> 
<item android:bottom="2dp"> 
    <shape android:shape="rectangle" > 
     <solid android:color="#AAAAAA" /> 

     <corners 
      android:topLeftRadius="10dp" 
      android:topRightRadius="10dp" /> 

    </shape> 
</item> 

Надеюсь, это можно сделать с помощью Pathshape в XML. Может ли кто-нибудь указать мне ссылку? Невозможно найти ссылку на PathShape

+3

Вы не можете создать их как xml-drawable, более подходящим является девять патчей. – Luksprog

+0

@Luksprog Я надеялся сделать это программно с PathShape. Возможно ли это? – intrepidkarthi

+0

@intrepidkarthi вы нашли какое-либо решение – UnderGround

ответ

0

Он работает отлично с двумя накладными девять изображений. Один для активной вкладки и один для неактивной вкладки.

+0

Но как вы добавили отдельный прослушиватель, чтобы удалить значок на вкладке? –

+0

@AkhileshSk, используя идентификатор вкладки, который я использую – intrepidkarthi

1

поставит вам страницу в FrameLayout, а также hashmap (с их конкретными именами). то вы можете изменить вкладку, как этот

FrameLayout fl =new FrameLayout(context); 
    HashMap<String,LinearLayout> tabs =new HashMap<String,LinearLayout>(); 

    LinearLayout tab =new LinearLayout(context); 
    fl.addView(tab); 
    tabs.put("home",tab); 

    tab =new LinearLayout(context); 
    fl.addView(tab); 
    tabs.put("events",tab); 



private void changeTab(String tabKey) { 
    for (java.util.Map.Entry<String, LinearLayout> e : tabs.entrySet()) { 
     if (e.getKey().compareTo(key) == 0) { 
      e.getValue().setVisibility(View.VISIBLE); 
     } else { 
      e.getValue().setVisibility(View.INVISIBLE); 
     } 
    } 
} 


use this to change tab: 

    changeTab("home"); 

ПРИМЕЧАНИЕ: Вы должны установить в качестве фл contentview деятельности или добавить другой вид и установить его в качестве contentview

+0

Спасибо за ответ. Мне тоже нужно это решение. Но мой вопрос в основном касается проектирования вкладок. – intrepidkarthi

+0

, чтобы создать табуляции, вы должны создать свою собственную панель вкладок и кнопки вкладок. потому что, как вы видите, активная вкладка находится на других. вы можете сделать это, поместив ваши кнопки в относительный макет и изменив их z-index (я не знаю названия этого в андроиде. Поэтому я использую z-index в html. Но я знаю, что он существует, ищите его) – bmavus

+0

okay. В настоящее время я пытаюсь использовать девять патч-изображений. Я скоро обновлю результаты. – intrepidkarthi