Tabwidget перекрывается с моим содержанием деятельности
Потратив 2 дня на поиски ответа, я хотел бы попросить о помощи по поводу следующего поведения.
Я пытаюсь написать простое приложение-вкладку на Android с разметкой для каждого вида деятельности. Я разработал макет так, чтобы вкладка появилась в нижней части экрана.
На первой вкладке я пытаюсь вставить простой 2-строчный ListView. Моя проблема в том, что ListView находится внизу, но половина его скрыта за вкладкой. Я хотел бы понять, как сделать так, чтобы мой ListView отображался прямо над вкладкой.
Вот мой main.xml:
<?xml version="1.0" encoding="utf-8"?>
<TabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp" />
<TabWidget
android:id="@android:id/tabs"
android:layout_alignParentBottom="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
</TabHost>
Вот мой основной класс приложений:
public class TestTabWidget extends TabActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
intent = new Intent().setClass(this, AActivity.class);
spec = tabHost.newTabSpec("artists").setIndicator("Tab A",
res.getDrawable(R.drawable.ic_tab_a))
.setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(0);
}
}
Вот мой код активности:
public class AActivity extends Activity {
ListView lvListe;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a_layout);
lvListe = (ListView)findViewById(R.id.lvListe);
lvListe.setBackgroundResource(R.layout.tables);
String[] listeStrings = {"Value 1","Value 2"};
lvListe.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,listeStrings));
}
}
Вот мой макет для деятельности:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@+id/lvListe"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentBottom="true" />
</RelativeLayout>
Спасибо всем, кто хочет мне помочь, я просто схожу с ума....
Адам
1 ответ
Попробуйте этот макет вместо RelativeLayout
раздел:
<RelativeLayout
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@android:id/tabs"
android:padding="5dp" />
<TabWidget
android:id="@android:id/tabs"
android:layout_alignParentBottom="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
Прямо сейчас, ваш FrameLayout
заполняет все пространство внутри RelativeLayout
, как RelativeLayout
не делает различий о размещении предметов рядом друг с другом, как LinearLayout
делает, и позволяет перекрытия. Моя настройка говорит макету заполнить пространство между виджетом в верхней части этого макета.
Еще одна заметка о RelativeLayout
Z-порядок элементов определяется порядком в XML, поэтому TabWidget
появляется в верхней части FrameLayout
, Если вы изменили порядок, TabWidget
не было бы даже видно!
Надеюсь, это поможет!