Erstellen Sie ein gemeinsames Layout für Ihre Basisaktivität. und dann fügen Sie dieses Layout in das gesamte Layout ein, indem Sie das Tag <include>
verwenden, das Sie gleich machen möchten.
Anschließend erstellen Sie eine abstrakte Aktivität und behandeln dann alle Klicks auf die Schaltflächen und den Code in dieser Aktivität und erweitern diese Aktivität dann in allen anderen Aktivitäten, in denen Sie das Basislayout enthalten haben.
Zum Beispiel
gemeinsame Tasten xml Layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/tabhost_bg"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="3">
<Button
android:id="@+id/btnHome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bottom_btn_active"
android:layout_weight="1"
android:text="@string/label_home"
style="@style/bottom_tab_btn"/>
<Button
android:id="@+id/btnSetting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bottom_btn_active"
android:layout_weight="1"
android:text="@string/label_settings"
style="@style/bottom_tab_btn"/>
<Button
android:id="@+id/btnMore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bottom_btn_active"
android:layout_weight="1"
android:text="@string/label_more"
style="@style/bottom_tab_btn"/>
</LinearLayout>
Hier ist ein XML-Layout, in dem Sie über XML-Datei
<include
android:id="@+id/bottombar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
layout="@layout/bottom_bar" />
Hier android können sein: layout_width und Android: layout_height und layout sind obligatorische Attribute
Jetzt ist hier eine Basisaktivität, die das Klicken der allgemeinen Steuerelemente Griffe
public abstract class BottomBar extends Activity implements OnClickListener {
protected Button btnHome;
Button btnSetting, btnMore;
private Activity mActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivity = this;
}
protected void mappingWidgets() {
btnHome = (Button) findViewById(R.id.btnHome);
btnSetting = (Button) findViewById(R.id.btnSetting);
btnMore = (Button) findViewById(R.id.btnMore);
btnHome.setOnClickListener(this);
btnSetting.setOnClickListener(this);
btnMore.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v == null)
throw new NullPointerException(
"You are refering null object. "
+ "Please check weather you had called super class method mappingWidgets() or not");
if (v == btnHome) {
} else if (v == btnSetting) {
}else if(v == btnMore) {
}
}
protected void handleBackgrounds(View v) {
if (v == btnHome) {
btnHome.setBackgroundResource(R.drawable.bottom_btn_hover);
btnSetting.setBackgroundResource(R.drawable.bottom_btn_active);
btnMore.setBackgroundResource(R.drawable.bottom_btn_active);
} else if (v == btnSetting) {
btnHome.setBackgroundResource(R.drawable.bottom_btn_active);
btnSetting.setBackgroundResource(R.drawable.bottom_btn_hover);
btnMore.setBackgroundResource(R.drawable.bottom_btn_active);
} else if (v == btnMore) {
btnHome.setBackgroundResource(R.drawable.bottom_btn_active);
btnSetting.setBackgroundResource(R.drawable.bottom_btn_active);
btnMore.setBackgroundResource(R.drawable.bottom_btn_hover);
}
}
}
Jetzt ist noch ein Schritt, um diese Basis erstreckt sich in alle Ihre Aktivitäten Aktivität.
Sie können die Aktivität Base mit dem Schlüsselwort extends erweitern. Zum Beispiel
public class MyActivity extends BottomBar
Hinweis: Vom Kind Aktivität müssen Sie die Super-Methode der Basisklasse aufrufen müssen, um das Klicken der gemeinsamen Kontrollen Ihrer Basislayout zu handhaben.
Sie können somit mehrere gemeinsame Layouts innerhalb Ihrer einzelnen Aktivität implementieren.
Hoffe, das wird Ihnen helfen. Viel Spaß !!
Gibt es eine Möglichkeit, auf die ID des Basislayouts im Layout zuzugreifen, das es implementiert? – zabawaba99
Ich glaube nicht, dass auf die Komponente des enthaltenen Layouts im Host-Layout zugegriffen werden muss. Wenn du wirklich auf afaik zugreifen willst, kannst du das verwenden. – Dharmendra
Wirklich hilfreicher Beitrag !! :) – Nitesh