我的问题不在于我的应用程序,我必须将屏幕划分为两个相等的部分,每个玩家的一侧。每一面都有两个TextView,一些按钮等,对于两个玩家都是相同的,但是一个侧面相对于另一个旋转了180度。
最好的办法是什么?
任何人都可以帮助我并告诉我在Android中更好的方法,以及更好的管理和性能方式吗?
提前致谢。
答案 0 :(得分:0)
我最终决定在我的根布局中使用include标记:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dip"
android:orientation="vertical"
tools:context="com.example.cdp.mispartidas.actividades.Duel">
<include android:id="@+id/player0"
android:layout_gravity="top"
android:rotation="180"
android:layout_weight="1"
android:layout_marginBottom="10dp"
layout="@layout/player_duel"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/holo_blue_dark"/>
<include android:id="@+id/player1"
android:layout_gravity="bottom"
android:layout_weight="1"
android:layout_marginBottom="10dp"
layout="@layout/player_duel"/>
现在我怀疑是管理听众的更好方法。在“player_duel”布局中,我有两个用于修改TextView内容的按钮,另一个用于修改另一个任务的按钮,以及在单击TextView时必须显示的对话框等。
现在我将所有视图都重复了。我可以通过使用相应的布局来识别,但我如何统一事件监听器管理?
此致
答案 1 :(得分:0)
player_duel.xml
<LinearLayout>
<TextView android:id="@+id/tv_0"/>
<Button android:id="@+id/btn_0"/>
<Button android:id="@+id/btn_1"/>
<Button android:id="@+id/btn_2"/>
</LinearLayout>
OnClickListner listener = new OnClickListener(){
public void onClick(View v){
if(v.getParent()!=null && v.getParent().getId() == R.id.player0){
swicth(v.getId()){
case R.id.tv_0:
break
case R.id.btn_0:
break
case R.id.btn_1:
break
case R.id.btn_2:
break
}
}else if(v.getParent()!=null && v.getParent().getId() == R.id.player1){
......
}
}
};
((ViewGroup)findViewById(R.id.player0)).findViewById(R.id.tv_0).setOnClickListener(listener);
......
答案 2 :(得分:0)
这是布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="10dp">
<RelativeLayout
android:id="@+id/leftside"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="left"
android:orientation="vertical"
android:layout_gravity="left"
android:padding="10dp">
<ImageButton android:id="@+id/diceduel"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/dice"
android:scaleType="center"
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_gravity="top"
android:layout_alignParentLeft="false"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
<ImageButton android:id="@+id/changeduel"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/ic_autorenew_white_24dp"
android:background="@drawable/roundbutton"
android:scaleType="fitXY"
android:padding="10dp"
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_gravity="bottom"
android:layout_alignParentLeft="false"
android:layout_alignParentTop="false"
android:layout_alignParentBottom="true" />
<TextView
android:layout_width="40dp"
android:layout_height="40dp"
android:id="@+id/diceresult"
android:textAlignment="center"
android:layout_below="@+id/diceduel"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:textSize="30dp"
android:gravity="center" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/relativeLayout"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:layout_gravity="center"
android:layout_weight="1" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/playername"
android:gravity="center"
android:paddingTop="10dp"
android:textSize="20dp"
android:maxLines="1"
android:ellipsize="marquee"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textColor="@android:color/black" />
<TextView
android:id="@+id/scoreduel"
android:layout_alignParentLeft="false"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:textSize="100dp"
android:layout_weight="1"
android:textStyle="bold"
android:maxLines="1"
android:ellipsize="none"
android:layout_gravity="center"
android:textColor="@android:color/black"
android:layout_below="@+id/playername"
android:layout_alignParentBottom="true" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rightside"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="right"
android:orientation="vertical"
android:layout_gravity="right"
android:padding="10dp">
<ImageButton android:id="@+id/sumduel"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/ic_add_white_24dp"
android:background="@drawable/roundbutton"
android:scaleType="fitXY"
android:padding="10dp"
android:layout_gravity="top"
android:layout_alignParentLeft="false"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
<ImageButton android:id="@+id/substractduel"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/ic_remove_white_24dp"
android:background="@drawable/roundbutton"
android:scaleType="fitXY"
android:padding="10dp"
android:layout_gravity="bottom"
android:layout_alignParentLeft="false"
android:layout_alignParentTop="false"
android:layout_alignParentEnd="false"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="false" />
</RelativeLayout>
我终于通过定义双视图数组并使用“假”视图来找到解决方案。我为布局中的所有公共视图定义了一个监听器,并将索引作为属性存储在构造函数中,因此在监听器中我只需要使用索引引用数组中的正确项。