이것은 며칠 동안 나를 괴롭혔던 문제입니다. 솔루션을 찾기 위해 최선을 다했으나 현재 사용하고있는 방식이 올바른 방식이라고 말합니다.동일한 레이아웃의 여러 인스턴스를 탭으로 확대시키기
상황은 간단합니다. 예를 들어 레이블 중 하나를 변경하기 위해 setText를 사용하는 것과 같이 약간 다른 내용으로 동일한 레이아웃을 포함 할 다섯 개의 탭이 있습니다. 따라서 레이아웃을 다섯 번 팽창시키고 모든 탭을 별도의 탭으로 추가합니다.
이
내 코드입니다 :package com.test;
import android.app.TabActivity;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.widget.TabHost;
import android.widget.TextView;
public class TestActivity extends TabActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost host = getTabHost();
Resources res = getResources();
String[] days = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };
for (int i = 0; i < days.length; i++)
{
View contents = getLayoutInflater().inflate(R.layout.test, host.getTabContentView(), true);
((TextView)contents.findViewById(R.id.title)).setText(days[i]);
host.addTab
(
host.newTabSpec(days[i]).
setIndicator(days[i]).
setContent(contents.getId())
);
host.getTabWidget().getChildAt(i).getLayoutParams().height = 55;
}
}
}
그리고 내 레이아웃 파일은 다음과 같습니다
이<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="6dip">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
대신 텍스트가 별도의 탭에있는의 모든 텍스트가 서로 겹치는 문제가 있음 모든 탭에서 동일합니다. 정말 간과할만한 것이있을 것입니다. 어떤 도움을 주셔서 감사합니다.
감사합니다! 그게 내 문제를 해결해 줬어. 그것은 나를 궁금해하지만 단풍 ... 내가보기의 새로운 인스턴스를 만들 때마다 내가 틀렸을까요? – Sven
일반적으로 팽창은 새 뷰를 만듭니다. 그러나 이것은'inflate (R.layout.test, host.getTabContentView(), true)'가 아닙니다. 그것은 당신이 팽창 할 때마다 똑같은 시각으로 당신을 돌려 줄 것입니다. – PH7
충분합니다. 감사. – Sven