Java Android可扩展菜单项
我试图设计一个菜单,你可以在其中连接你的社交媒体帐户与我的应用程序。为此,我需要一个菜单,列出所有可访问的社交媒体应用程序。 例如:Java Android可扩展菜单项,java,android,Java,Android,我试图设计一个菜单,你可以在其中连接你的社交媒体帐户与我的应用程序。为此,我需要一个菜单,列出所有可访问的社交媒体应用程序。 例如: 推特 脸谱网 Youtube 等等 要连接到您的帐户,您可以单击其中一个菜单项,并显示一个单独的“内容”。我发现了一种类似于charm的方法,但会产生大量代码,如图所示: // Twitter btn_login_twitter = view.findViewById(R.id.twitter_login_btn); img_ca_twitt
- 推特
- 脸谱网
- Youtube
- 等等
// Twitter
btn_login_twitter = view.findViewById(R.id.twitter_login_btn);
img_ca_twitter_expand = view.findViewById(R.id.ca_twitter_expand);
fl_ca_twitter_content = view.findViewById(R.id.ca_twitter_content_layout);
fl_ca_twitter_header = view.findViewById(R.id.ca_twitter_header);
fl_ca_twitter_header.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (fl_ca_twitter_content.getVisibility()== View.VISIBLE) fl_ca_twitter_content.setVisibility(View.GONE);
else fl_ca_twitter_content.setVisibility(View.VISIBLE);
img_ca_twitter_expand.animate().rotation(img_ca_twitter_expand.getRotation() == 0 ? 180 : 0).setDuration(500).start();
}
});
// Facebook
btn_login_facebook = view.findViewById(R.id.facebook_login_btn);
fl_ca_facebook_content = view.findViewById(R.id.ca_facebook_content_layout);
img_ca_facebook_expand = view.findViewById(R.id.ca_facebook_expand);
fl_ca_facebook_header = view.findViewById(R.id.ca_facebook_header);
fl_ca_facebook_header.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (fl_ca_facebook_content.getVisibility() == View.VISIBLE) fl_ca_facebook_content.setVisibility(View.GONE);
else fl_ca_facebook_content.setVisibility(View.VISIBLE);
img_ca_facebook_expand.animate().rotation(img_ca_facebook_expand.getRotation() == 0 ? 180 : 0).setDuration(500).start();
}
});
//Youtube
fl_ca_youtube_content = view.findViewById(R.id.ca_youtube_content_layout);
fl_ca_youtube_header = view.findViewById(R.id.ca_youtube_header);
img_ca_youtube_expand = view.findViewById(R.id.ca_youtube_expand);
fl_ca_youtube_header.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (fl_ca_youtube_content.getVisibility() == View.VISIBLE) fl_ca_youtube_content.setVisibility(View.GONE);
else fl_ca_youtube_content.setVisibility(View.VISIBLE);
img_ca_youtube_expand.animate().rotation(img_ca_youtube_expand.getRotation() == 0 ? 180 : 0).setDuration(500).start();
}
});
正如您在这里看到的,每个应用程序的代码几乎相同。只有属性的名称会随着应用程序的更改而更改。
下面是一个屏幕截图,显示了它现在的样子
xml文件中存在相同的问题:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/ca_scrollview_layout"
android:orientation="vertical">
<FrameLayout
android:id="@+id/ca_twitter_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/about_twitter_color"
android:outlineProvider="bounds">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical|center_horizontal"
android:text="Twitter"
android:textAppearance="@style/TextAppearance.AppCompat.Headline" />
<ImageView
android:id="@+id/ca_twitter_expand"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
app:srcCompat="@drawable/baseline_keyboard_arrow_down_black_48" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ca_twitter_content_layout"
android:visibility="gone">
<include layout="@layout/connect_twitter_layout" />
</FrameLayout>
<FrameLayout
android:id="@+id/ca_facebook_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/about_facebook_color">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical|center_horizontal"
android:text="Facebook"
android:textAlignment="center"
android:textAppearance="@style/TextAppearance.AppCompat.Headline" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:id="@+id/ca_facebook_expand"
app:srcCompat="@drawable/baseline_keyboard_arrow_down_black_48" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ca_facebook_content_layout"
android:visibility="gone">
<include layout="@layout/connect_facebook_layout" />
</FrameLayout>
<FrameLayout
android:id="@+id/ca_youtube_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/about_youtube_color">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:text="Youtube"
android:textAlignment="center"
android:textAppearance="@style/TextAppearance.AppCompat.Headline" />
<ImageView
android:id="@+id/ca_youtube_expand"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
app:srcCompat="@drawable/baseline_keyboard_arrow_down_black_48" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ca_youtube_content_layout"
android:visibility="gone">
<include layout="@layout/connect_youtube_layout" />
</FrameLayout>
</LinearLayout>
有更好的办法解决我的问题吗?我觉得这个不太好 您可以通过为可单击的项目提供一个OnClickListener来改进代码。请看一下这个,以获得详细的解释